Blob Blame History Raw
From: Johannes Berg <johannes.berg@intel.com>
Date: Wed, 24 May 2017 09:07:47 +0200
Subject: skbuff/mac80211: introduce and use skb_put_zero()
Patch-mainline: v4.13-rc1
Git-commit: e45a79da863c199d7c47b1ee6d33cee23c89eac1
References: bsc#1056787

This pattern was introduced a number of times in mac80211 just now,
and since it's present in a number of other places it makes sense
to add a little helper for it.

This just adds the helper and transforms the mac80211 code, a later
patch will transform other places.

Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
 include/linux/skbuff.h    |    9 +++++++++
 net/mac80211/mesh.c       |    9 +++------
 net/mac80211/mesh_plink.c |    3 +--
 3 files changed, 13 insertions(+), 8 deletions(-)

--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1962,6 +1962,15 @@ static inline unsigned char *__skb_put(s
 	return tmp;
 }
 
+static inline unsigned char *skb_put_zero(struct sk_buff *skb, unsigned int len)
+{
+	unsigned char *tmp = skb_put(skb, len);
+
+	memset(tmp, 0, len);
+
+	return tmp;
+}
+
 unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
 static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
 {
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -744,8 +744,7 @@ ieee80211_mesh_build_beacon(struct ieee8
 		int ie_len = 2 + sizeof(struct ieee80211_channel_sw_ie) +
 			     2 + sizeof(struct ieee80211_mesh_chansw_params_ie);
 
-		pos = skb_put(skb, ie_len);
-		memset(pos, 0, ie_len);
+		pos = skb_put_zero(skb, ie_len);
 		*pos++ = WLAN_EID_CHANNEL_SWITCH;
 		*pos++ = 3;
 		*pos++ = 0x0;
@@ -772,8 +771,7 @@ ieee80211_mesh_build_beacon(struct ieee8
 		switch (csa->settings.chandef.width) {
 		case NL80211_CHAN_WIDTH_40:
 			ie_len = 2 + sizeof(struct ieee80211_sec_chan_offs_ie);
-			pos = skb_put(skb, ie_len);
-			memset(pos, 0, ie_len);
+			pos = skb_put_zero(skb, ie_len);
 
 			*pos++ = WLAN_EID_SECONDARY_CHANNEL_OFFSET; /* EID */
 			*pos++ = 1;				    /* len */
@@ -789,8 +787,7 @@ ieee80211_mesh_build_beacon(struct ieee8
 			/* Channel Switch Wrapper + Wide Bandwidth CSA IE */
 			ie_len = 2 + 2 +
 				 sizeof(struct ieee80211_wide_bw_chansw_ie);
-			pos = skb_put(skb, ie_len);
-			memset(pos, 0, ie_len);
+			pos = skb_put_zero(skb, ie_len);
 
 			*pos++ = WLAN_EID_CHANNEL_SWITCH_WRAPPER; /* EID */
 			*pos++ = 5;				  /* len */
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -264,8 +264,7 @@ static int mesh_plink_frame_tx(struct ie
 		band = sband->band;
 
 		/* capability info */
-		pos = skb_put(skb, 2);
-		memset(pos, 0, 2);
+		pos = skb_put_zero(skb, 2);
 		if (action == WLAN_SP_MESH_PEERING_CONFIRM) {
 			/* AID */
 			pos = skb_put(skb, 2);