public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <Alexander.Levin@microsoft.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Cc: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>,
	Michal Kazior <michal.kazior@tieto.com>,
	Johannes Berg <johannes.berg@intel.com>,
	Sasha Levin <Alexander.Levin@microsoft.com>
Subject: [PATCH AUTOSEL for 4.9 108/190] mac80211: Fix possible sband related NULL pointer de-reference
Date: Thu, 8 Mar 2018 04:59:39 +0000	[thread overview]
Message-ID: <20180308045810.8041-108-alexander.levin@microsoft.com> (raw)
In-Reply-To: <20180308045810.8041-1-alexander.levin@microsoft.com>

From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>

[ Upstream commit 21a8e9dd52b64f0170bad208293ef8c30c3c1403 ]

Existing API 'ieee80211_get_sdata_band' returns default 2 GHz band even
if the channel context configuration is NULL. This crashes for chipsets
which support 5 Ghz alone when it tries to access members of 'sband'.
Channel context configuration can be NULL in multivif case and when
channel switch is in progress (or) when it fails. Fix this by replacing
the API 'ieee80211_get_sdata_band' with  'ieee80211_get_sband' which
returns a NULL pointer for sband when the channel configuration is NULL.

An example scenario is as below:

In multivif mode (AP + STA) with drivers like ath10k, when we do a
channel switch in the AP vif (which has a number of clients connected)
and a STA vif which is connected to some other AP, when the channel
switch in AP vif fails, while the STA vifs tries to connect to the
other AP, there is a window where the channel context is NULL/invalid
and this results in a crash  while the clients connected to the AP vif
tries to reconnect and this race is very similar to the one investigated
by Michal in https://patchwork.kernel.org/patch/3788161/ and this does
happens with hardware that supports 5Ghz alone after long hours of
testing with continuous channel switch on the AP vif

ieee80211 phy0: channel context reservation cannot be finalized because
some interfaces aren't switching
wlan0: failed to finalize CSA, disconnecting
wlan0-1: deauthenticating from 8c:fd:f0:01:54:9c by local choice
	(Reason: 3=DEAUTH_LEAVING)

	WARNING: CPU: 1 PID: 19032 at net/mac80211/ieee80211_i.h:1013 sta_info_alloc+0x374/0x3fc [mac80211]
	[<bf77272c>] (sta_info_alloc [mac80211])
	[<bf78776c>] (ieee80211_add_station [mac80211]))
	[<bf73cc50>] (nl80211_new_station [cfg80211])

	Unable to handle kernel NULL pointer dereference at virtual
	address 00000014
	pgd = d5f4c000
	Internal error: Oops: 17 [#1] PREEMPT SMP ARM
	PC is at sta_info_alloc+0x380/0x3fc [mac80211]
	LR is at sta_info_alloc+0x37c/0x3fc [mac80211]
	[<bf772738>] (sta_info_alloc [mac80211])
	[<bf78776c>] (ieee80211_add_station [mac80211])
	[<bf73cc50>] (nl80211_new_station [cfg80211]))

Cc: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
---
 net/mac80211/cfg.c         | 30 +++++++++++++++++-------------
 net/mac80211/ibss.c        |  6 +++++-
 net/mac80211/ieee80211_i.h | 36 +++++++++++++++++++++---------------
 net/mac80211/mesh.c        | 29 ++++++++++++++++++++---------
 net/mac80211/mesh_plink.c  | 37 ++++++++++++++++++++++++++-----------
 net/mac80211/mlme.c        | 14 ++++++++++++--
 net/mac80211/rate.c        |  4 +++-
 net/mac80211/sta_info.c    | 13 +++++++++----
 net/mac80211/tdls.c        | 29 +++++++++++++++++++----------
 net/mac80211/tx.c          |  5 ++++-
 net/mac80211/util.c        |  6 +++---
 11 files changed, 139 insertions(+), 70 deletions(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index dee60428c78c..efa2a2fcae72 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -620,10 +620,11 @@ void sta_set_rate_info_tx(struct sta_info *sta,
 		int shift = ieee80211_vif_get_shift(&sta->sdata->vif);
 		u16 brate;
 
-		sband = sta->local->hw.wiphy->bands[
-				ieee80211_get_sdata_band(sta->sdata)];
-		brate = sband->bitrates[rate->idx].bitrate;
-		rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
+		sband = ieee80211_get_sband(sta->sdata);
+		if (sband) {
+			brate = sband->bitrates[rate->idx].bitrate;
+			rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
+		}
 	}
 	if (rate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
 		rinfo->bw = RATE_INFO_BW_40;
@@ -1218,10 +1219,11 @@ static int sta_apply_parameters(struct ieee80211_local *local,
 	int ret = 0;
 	struct ieee80211_supported_band *sband;
 	struct ieee80211_sub_if_data *sdata = sta->sdata;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
 	u32 mask, set;
 
-	sband = local->hw.wiphy->bands[band];
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return -EINVAL;
 
 	mask = params->sta_flags_mask;
 	set = params->sta_flags_set;
@@ -1354,7 +1356,7 @@ static int sta_apply_parameters(struct ieee80211_local *local,
 		ieee80211_parse_bitrates(&sdata->vif.bss_conf.chandef,
 					 sband, params->supported_rates,
 					 params->supported_rates_len,
-					 &sta->sta.supp_rates[band]);
+					 &sta->sta.supp_rates[sband->band]);
 	}
 
 	if (params->ht_capa)
@@ -1370,8 +1372,8 @@ static int sta_apply_parameters(struct ieee80211_local *local,
 		/* returned value is only needed for rc update, but the
 		 * rc isn't initialized here yet, so ignore it
 		 */
-		__ieee80211_vht_handle_opmode(sdata, sta,
-					      params->opmode_notif, band);
+		__ieee80211_vht_handle_opmode(sdata, sta, params->opmode_notif,
+					      sband->band);
 	}
 
 	if (params->support_p2p_ps >= 0)
@@ -2017,13 +2019,15 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 				struct bss_parameters *params)
 {
 	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-	enum nl80211_band band;
+	struct ieee80211_supported_band *sband;
 	u32 changed = 0;
 
 	if (!sdata_dereference(sdata->u.ap.beacon, sdata))
 		return -ENOENT;
 
-	band = ieee80211_get_sdata_band(sdata);
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return -EINVAL;
 
 	if (params->use_cts_prot >= 0) {
 		sdata->vif.bss_conf.use_cts_prot = params->use_cts_prot;
@@ -2036,7 +2040,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 	}
 
 	if (!sdata->vif.bss_conf.use_short_slot &&
-	    band == NL80211_BAND_5GHZ) {
+	    sband->band == NL80211_BAND_5GHZ) {
 		sdata->vif.bss_conf.use_short_slot = true;
 		changed |= BSS_CHANGED_ERP_SLOT;
 	}
@@ -2049,7 +2053,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 
 	if (params->basic_rates) {
 		ieee80211_parse_bitrates(&sdata->vif.bss_conf.chandef,
-					 wiphy->bands[band],
+					 wiphy->bands[sband->band],
 					 params->basic_rates,
 					 params->basic_rates_len,
 					 &sdata->vif.bss_conf.basic_rates);
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 62d13eabe17f..d31818e7d10c 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -994,7 +994,7 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
 	enum nl80211_band band = rx_status->band;
 	enum nl80211_bss_scan_width scan_width;
 	struct ieee80211_local *local = sdata->local;
-	struct ieee80211_supported_band *sband = local->hw.wiphy->bands[band];
+	struct ieee80211_supported_band *sband;
 	bool rates_updated = false;
 	u32 supp_rates = 0;
 
@@ -1004,6 +1004,10 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
 	if (!ether_addr_equal(mgmt->bssid, sdata->u.ibss.bssid))
 		return;
 
+	sband = local->hw.wiphy->bands[band];
+	if (WARN_ON(!sband))
+		return;
+
 	rcu_read_lock();
 	sta = sta_info_get(sdata, mgmt->sa);
 
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 03dbc6bd8598..7fd544d970d9 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -991,21 +991,6 @@ sdata_assert_lock(struct ieee80211_sub_if_data *sdata)
 	lockdep_assert_held(&sdata->wdev.mtx);
 }
 
-static inline enum nl80211_band
-ieee80211_get_sdata_band(struct ieee80211_sub_if_data *sdata)
-{
-	enum nl80211_band band = NL80211_BAND_2GHZ;
-	struct ieee80211_chanctx_conf *chanctx_conf;
-
-	rcu_read_lock();
-	chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
-	if (!WARN_ON(!chanctx_conf))
-		band = chanctx_conf->def.chan->band;
-	rcu_read_unlock();
-
-	return band;
-}
-
 static inline int
 ieee80211_chandef_get_shift(struct cfg80211_chan_def *chandef)
 {
@@ -1410,6 +1395,27 @@ IEEE80211_WDEV_TO_SUB_IF(struct wireless_dev *wdev)
 	return container_of(wdev, struct ieee80211_sub_if_data, wdev);
 }
 
+static inline struct ieee80211_supported_band *
+ieee80211_get_sband(struct ieee80211_sub_if_data *sdata)
+{
+	struct ieee80211_local *local = sdata->local;
+	struct ieee80211_chanctx_conf *chanctx_conf;
+	enum nl80211_band band;
+
+	rcu_read_lock();
+	chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
+
+	if (WARN_ON(!chanctx_conf)) {
+		rcu_read_unlock();
+		return NULL;
+	}
+
+	band = chanctx_conf->def.chan->band;
+	rcu_read_unlock();
+
+	return local->hw.wiphy->bands[band];
+}
+
 /* this struct represents 802.11n's RA/TID combination */
 struct ieee80211_ra_tid {
 	u8 ra[ETH_ALEN];
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index b4b3fe078868..b2a27263d6ff 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -63,6 +63,7 @@ bool mesh_matches_local(struct ieee80211_sub_if_data *sdata,
 	struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
 	u32 basic_rates = 0;
 	struct cfg80211_chan_def sta_chan_def;
+	struct ieee80211_supported_band *sband;
 
 	/*
 	 * As support for each feature is added, check for matching
@@ -83,7 +84,11 @@ bool mesh_matches_local(struct ieee80211_sub_if_data *sdata,
 	     (ifmsh->mesh_auth_id == ie->mesh_config->meshconf_auth)))
 		return false;
 
-	ieee80211_sta_get_rates(sdata, ie, ieee80211_get_sdata_band(sdata),
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return false;
+
+	ieee80211_sta_get_rates(sdata, ie, sband->band,
 				&basic_rates);
 
 	if (sdata->vif.bss_conf.basic_rates != basic_rates)
@@ -399,12 +404,13 @@ static int mesh_add_ds_params_ie(struct ieee80211_sub_if_data *sdata,
 int mesh_add_ht_cap_ie(struct ieee80211_sub_if_data *sdata,
 		       struct sk_buff *skb)
 {
-	struct ieee80211_local *local = sdata->local;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
 	struct ieee80211_supported_band *sband;
 	u8 *pos;
 
-	sband = local->hw.wiphy->bands[band];
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return -EINVAL;
+
 	if (!sband->ht_cap.ht_supported ||
 	    sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT ||
 	    sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 ||
@@ -462,12 +468,13 @@ int mesh_add_ht_oper_ie(struct ieee80211_sub_if_data *sdata,
 int mesh_add_vht_cap_ie(struct ieee80211_sub_if_data *sdata,
 			struct sk_buff *skb)
 {
-	struct ieee80211_local *local = sdata->local;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
 	struct ieee80211_supported_band *sband;
 	u8 *pos;
 
-	sband = local->hw.wiphy->bands[band];
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return -EINVAL;
+
 	if (!sband->vht_cap.vht_supported ||
 	    sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT ||
 	    sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_5 ||
@@ -916,12 +923,16 @@ ieee80211_mesh_process_chnswitch(struct ieee80211_sub_if_data *sdata,
 	struct cfg80211_csa_settings params;
 	struct ieee80211_csa_ie csa_ie;
 	struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
+	struct ieee80211_supported_band *sband;
 	int err;
 	u32 sta_flags;
 
 	sdata_assert_lock(sdata);
 
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return false;
+
 	sta_flags = IEEE80211_STA_DISABLE_VHT;
 	switch (sdata->vif.bss_conf.chandef.width) {
 	case NL80211_CHAN_WIDTH_20_NOHT:
@@ -935,7 +946,7 @@ ieee80211_mesh_process_chnswitch(struct ieee80211_sub_if_data *sdata,
 
 	memset(&params, 0, sizeof(params));
 	memset(&csa_ie, 0, sizeof(csa_ie));
-	err = ieee80211_parse_ch_switch_ie(sdata, elems, band,
+	err = ieee80211_parse_ch_switch_ie(sdata, elems, sband->band,
 					   sta_flags, sdata->vif.addr,
 					   &csa_ie);
 	if (err < 0)
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index fcba70e57073..2d3c4695e75b 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -93,19 +93,23 @@ static inline void mesh_plink_fsm_restart(struct sta_info *sta)
 static u32 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata)
 {
 	struct ieee80211_local *local = sdata->local;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
-	struct ieee80211_supported_band *sband = local->hw.wiphy->bands[band];
+	struct ieee80211_supported_band *sband;
 	struct sta_info *sta;
 	u32 erp_rates = 0, changed = 0;
 	int i;
 	bool short_slot = false;
 
-	if (band == NL80211_BAND_5GHZ) {
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return changed;
+
+	if (sband->band == NL80211_BAND_5GHZ) {
 		/* (IEEE 802.11-2012 19.4.5) */
 		short_slot = true;
 		goto out;
-	} else if (band != NL80211_BAND_2GHZ)
+	} else if (sband->band != NL80211_BAND_2GHZ) {
 		goto out;
+	}
 
 	for (i = 0; i < sband->n_bitrates; i++)
 		if (sband->bitrates[i].flags & IEEE80211_RATE_ERP_G)
@@ -121,7 +125,7 @@ static u32 mesh_set_short_slot_time(struct ieee80211_sub_if_data *sdata)
 			continue;
 
 		short_slot = false;
-		if (erp_rates & sta->sta.supp_rates[band])
+		if (erp_rates & sta->sta.supp_rates[sband->band])
 			short_slot = true;
 		 else
 			break;
@@ -247,7 +251,15 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
 	mgmt->u.action.u.self_prot.action_code = action;
 
 	if (action != WLAN_SP_MESH_PEERING_CLOSE) {
-		enum nl80211_band band = ieee80211_get_sdata_band(sdata);
+		struct ieee80211_supported_band *sband;
+		enum nl80211_band band;
+
+		sband = ieee80211_get_sband(sdata);
+		if (!sband) {
+			err = -EINVAL;
+			goto free;
+		}
+		band = sband->band;
 
 		/* capability info */
 		pos = skb_put(skb, 2);
@@ -393,13 +405,16 @@ static void mesh_sta_info_init(struct ieee80211_sub_if_data *sdata,
 			       struct ieee802_11_elems *elems, bool insert)
 {
 	struct ieee80211_local *local = sdata->local;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
 	struct ieee80211_supported_band *sband;
 	u32 rates, basic_rates = 0, changed = 0;
 	enum ieee80211_sta_rx_bandwidth bw = sta->sta.bandwidth;
 
-	sband = local->hw.wiphy->bands[band];
-	rates = ieee80211_sta_get_rates(sdata, elems, band, &basic_rates);
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return;
+
+	rates = ieee80211_sta_get_rates(sdata, elems, sband->band,
+					&basic_rates);
 
 	spin_lock_bh(&sta->mesh->plink_lock);
 	sta->rx_stats.last_rx = jiffies;
@@ -410,9 +425,9 @@ static void mesh_sta_info_init(struct ieee80211_sub_if_data *sdata,
 		goto out;
 	sta->mesh->processed_beacon = true;
 
-	if (sta->sta.supp_rates[band] != rates)
+	if (sta->sta.supp_rates[sband->band] != rates)
 		changed |= IEEE80211_RC_SUPP_RATES_CHANGED;
-	sta->sta.supp_rates[band] = rates;
+	sta->sta.supp_rates[sband->band] = rates;
 
 	if (ieee80211_ht_cap_ie_to_sta_ht_cap(sdata, sband,
 					      elems->ht_cap_elem, sta))
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 1118c61f835d..fdab4f1390d2 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1851,11 +1851,16 @@ static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
 					   u16 capab, bool erp_valid, u8 erp)
 {
 	struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
+	struct ieee80211_supported_band *sband;
 	u32 changed = 0;
 	bool use_protection;
 	bool use_short_preamble;
 	bool use_short_slot;
 
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return changed;
+
 	if (erp_valid) {
 		use_protection = (erp & WLAN_ERP_USE_PROTECTION) != 0;
 		use_short_preamble = (erp & WLAN_ERP_BARKER_PREAMBLE) == 0;
@@ -1865,7 +1870,7 @@ static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
 	}
 
 	use_short_slot = !!(capab & WLAN_CAPABILITY_SHORT_SLOT_TIME);
-	if (ieee80211_get_sdata_band(sdata) == NL80211_BAND_5GHZ)
+	if (sband->band == NL80211_BAND_5GHZ)
 		use_short_slot = true;
 
 	if (use_protection != bss_conf->use_cts_prot) {
@@ -2994,7 +2999,12 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
 		goto out;
 	}
 
-	sband = local->hw.wiphy->bands[ieee80211_get_sdata_band(sdata)];
+	sband = ieee80211_get_sband(sdata);
+	if (!sband) {
+		mutex_unlock(&sdata->local->sta_mtx);
+		ret = false;
+		goto out;
+	}
 
 	/* Set up internal HT/VHT capabilities */
 	if (elems.ht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_HT))
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index 206698bc93f4..dbceb42c2a8e 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -875,7 +875,9 @@ int rate_control_set_rates(struct ieee80211_hw *hw,
 	struct ieee80211_sta_rates *old;
 	struct ieee80211_supported_band *sband;
 
-	sband = hw->wiphy->bands[ieee80211_get_sdata_band(sta->sdata)];
+	sband = ieee80211_get_sband(sta->sdata);
+	if (!sband)
+		return -EINVAL;
 	rate_control_apply_mask_ratetbl(sta, sband, rates);
 	/*
 	 * mac80211 guarantees that this function will not be called
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 348700b424ea..1ecf3d07d1f5 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -395,10 +395,15 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
 	sta->sta.smps_mode = IEEE80211_SMPS_OFF;
 	if (sdata->vif.type == NL80211_IFTYPE_AP ||
 	    sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
-		struct ieee80211_supported_band *sband =
-			hw->wiphy->bands[ieee80211_get_sdata_band(sdata)];
-		u8 smps = (sband->ht_cap.cap & IEEE80211_HT_CAP_SM_PS) >>
-				IEEE80211_HT_CAP_SM_PS_SHIFT;
+		struct ieee80211_supported_band *sband;
+		u8 smps;
+
+		sband = ieee80211_get_sband(sdata);
+		if (!sband)
+			goto free_txq;
+
+		smps = (sband->ht_cap.cap & IEEE80211_HT_CAP_SM_PS) >>
+			IEEE80211_HT_CAP_SM_PS_SHIFT;
 		/*
 		 * Assume that hostapd advertises our caps in the beacon and
 		 * this is the known_smps_mode for a station that just assciated
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index afca7d103684..f20dcf1b1830 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -47,8 +47,7 @@ static void ieee80211_tdls_add_ext_capab(struct ieee80211_sub_if_data *sdata,
 			   NL80211_FEATURE_TDLS_CHANNEL_SWITCH;
 	bool wider_band = ieee80211_hw_check(&local->hw, TDLS_WIDER_BW) &&
 			  !ifmgd->tdls_wider_bw_prohibited;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
-	struct ieee80211_supported_band *sband = local->hw.wiphy->bands[band];
+	struct ieee80211_supported_band *sband = ieee80211_get_sband(sdata);
 	bool vht = sband && sband->vht_cap.vht_supported;
 	u8 *pos = (void *)skb_put(skb, 10);
 
@@ -180,11 +179,14 @@ static void ieee80211_tdls_add_bss_coex_ie(struct sk_buff *skb)
 static u16 ieee80211_get_tdls_sta_capab(struct ieee80211_sub_if_data *sdata,
 					u16 status_code)
 {
+	struct ieee80211_supported_band *sband;
+
 	/* The capability will be 0 when sending a failure code */
 	if (status_code != 0)
 		return 0;
 
-	if (ieee80211_get_sdata_band(sdata) == NL80211_BAND_2GHZ) {
+	sband = ieee80211_get_sband(sdata);
+	if (sband && sband->band == NL80211_BAND_2GHZ) {
 		return WLAN_CAPABILITY_SHORT_SLOT_TIME |
 		       WLAN_CAPABILITY_SHORT_PREAMBLE;
 	}
@@ -358,17 +360,20 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
 				   u8 action_code, bool initiator,
 				   const u8 *extra_ies, size_t extra_ies_len)
 {
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
-	struct ieee80211_local *local = sdata->local;
 	struct ieee80211_supported_band *sband;
+	struct ieee80211_local *local = sdata->local;
 	struct ieee80211_sta_ht_cap ht_cap;
 	struct ieee80211_sta_vht_cap vht_cap;
 	struct sta_info *sta = NULL;
 	size_t offset = 0, noffset;
 	u8 *pos;
 
-	ieee80211_add_srates_ie(sdata, skb, false, band);
-	ieee80211_add_ext_srates_ie(sdata, skb, false, band);
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return;
+
+	ieee80211_add_srates_ie(sdata, skb, false, sband->band);
+	ieee80211_add_ext_srates_ie(sdata, skb, false, sband->band);
 	ieee80211_tdls_add_supp_channels(sdata, skb);
 
 	/* add any custom IEs that go before Extended Capabilities */
@@ -439,7 +444,6 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
 	 * the same on all bands. The specification limits the setup to a
 	 * single HT-cap, so use the current band for now.
 	 */
-	sband = local->hw.wiphy->bands[band];
 	memcpy(&ht_cap, &sband->ht_cap, sizeof(ht_cap));
 
 	if ((action_code == WLAN_TDLS_SETUP_REQUEST ||
@@ -545,9 +549,13 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
 	struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
 	size_t offset = 0, noffset;
 	struct sta_info *sta, *ap_sta;
-	enum nl80211_band band = ieee80211_get_sdata_band(sdata);
+	struct ieee80211_supported_band *sband;
 	u8 *pos;
 
+	sband = ieee80211_get_sband(sdata);
+	if (!sband)
+		return;
+
 	mutex_lock(&local->sta_mtx);
 
 	sta = sta_info_get(sdata, peer);
@@ -612,7 +620,8 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
 	ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
 
 	/* only include VHT-operation if not on the 2.4GHz band */
-	if (band != NL80211_BAND_2GHZ && sta->sta.vht_cap.vht_supported) {
+	if (sband->band != NL80211_BAND_2GHZ &&
+	    sta->sta.vht_cap.vht_supported) {
 		/*
 		 * if both peers support WIDER_BW, we can expand the chandef to
 		 * a wider compatible one, up to 80MHz
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 1ffd1e145c13..84582998f65f 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -4182,7 +4182,10 @@ struct sk_buff *ieee80211_beacon_get_tim(struct ieee80211_hw *hw,
 		return bcn;
 
 	shift = ieee80211_vif_get_shift(vif);
-	sband = hw->wiphy->bands[ieee80211_get_sdata_band(vif_to_sdata(vif))];
+	sband = ieee80211_get_sband(vif_to_sdata(vif));
+	if (!sband)
+		return bcn;
+
 	ieee80211_tx_monitor(hw_to_local(hw), copy, sband, 1, shift, false);
 
 	return bcn;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 545c79a42a77..a2756096b94a 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1590,14 +1590,14 @@ u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
 	size_t num_rates;
 	u32 supp_rates, rate_flags;
 	int i, j, shift;
+
 	sband = sdata->local->hw.wiphy->bands[band];
+	if (WARN_ON(!sband))
+		return 1;
 
 	rate_flags = ieee80211_chandef_rate_flags(&sdata->vif.bss_conf.chandef);
 	shift = ieee80211_vif_get_shift(&sdata->vif);
 
-	if (WARN_ON(!sband))
-		return 1;
-
 	num_rates = sband->n_bitrates;
 	supp_rates = 0;
 	for (i = 0; i < elems->supp_rates_len +
-- 
2.14.1

  parent reply	other threads:[~2018-03-08  5:02 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-08  4:58 [PATCH AUTOSEL for 4.9 001/190] powerpc/nohash: Fix use of mmu_has_feature() in setup_initial_memory_limit() Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 002/190] usb: dwc2: Make sure we disconnect the gadget state Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 003/190] usb: gadget: dummy_hcd: Fix wrong power status bit clear/reset in dummy_hub_control() Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 004/190] perf evsel: Return exact sub event which failed with EPERM for wildcards Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 005/190] iwlwifi: mvm: fix RX SKB header size and align it properly Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 007/190] perf session: Don't rely on evlist in pipe mode Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 006/190] drivers/perf: arm_pmu: handle no platform_device Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 009/190] vfio/spapr_tce: Check kzalloc() return when preregistering memory Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 008/190] vfio/powerpc/spapr_tce: Enforce IOMMU type compatibility check Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 010/190] scsi: sg: check for valid direction before starting the request Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 011/190] scsi: sg: close race condition in sg_remove_sfp_usercontext() Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 012/190] ALSA: hda: Add Geminilake id to SKL_PLUS Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 013/190] kprobes/x86: Fix kprobe-booster not to boost far call instructions Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 015/190] pwm: tegra: Increase precision in PWM rate calculation Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 014/190] kprobes/x86: Set kprobes pages read-only Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 017/190] Bluetooth: Avoid bt_accept_unlink() double unlinking Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 018/190] Bluetooth: 6lowpan: fix delay work init in add_peer_chan() Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 016/190] clk: qcom: msm8996: Fix the vfe1 powerdomain name Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 020/190] ath10k: fix compile time sanity check for CE4 buffer size Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 019/190] mac80211_hwsim: use per-interface power level Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 022/190] wil6210: fix memory access violation in wil_memcpy_from/toio_32 Sasha Levin
2018-03-08  4:58 ` [PATCH AUTOSEL for 4.9 021/190] wil6210: fix protection against connections during reset Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 023/190] perf stat: Fix bug in handling events in error state Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 024/190] mwifiex: Fix invalid port issue Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 026/190] bonding: handle link transition from FAIL to UP correctly Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 025/190] platform/x86: asus-nb-wmi: Add wapf4 quirk for the X302UA Sasha Levin
2018-03-08 17:39   ` Darren Hart
2018-03-08 17:47     ` Greg KH
2018-03-08 18:15       ` Sasha Levin
2018-03-08 18:37         ` Darren Hart
2018-03-09 16:37           ` Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 027/190] regulator: anatop: set default voltage selector for pcie Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 028/190] power: supply: bq24190_charger: Limit over/under voltage fault logging Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 031/190] Input: ar1021_i2c - fix too long name in driver's device table Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 029/190] x86: i8259: export legacy_pic symbol Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 030/190] rtc: cmos: Do not assume irq 8 for rtc when there are no legacy irqs Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 032/190] time: Change posix clocks ops interfaces to use timespec64 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 033/190] ACPI/processor: Fix error handling in __acpi_processor_start() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 035/190] cpufreq/sh: Replace racy task affinity logic Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 034/190] ACPI/processor: " Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 037/190] i2c: i2c-scmi: add a MS HID Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 036/190] genirq: Use irqd_get_trigger_type to compare the trigger type for shared IRQs Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 038/190] net: ipv6: send unsolicited NA on admin up Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 039/190] [media] media/dvb-core: Race condition when writing to CAM Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 040/190] btrfs: fix a bogus warning when converting only data or metadata Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 041/190] ASoC: Intel: Atom: update Thinkpad 10 quirk Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 043/190] spi: dw: Disable clock after unregistering the host Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 042/190] tools/testing/nvdimm: fix nfit_test shutdown crash Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 045/190] ath: Fix updating radar flags for coutry code India Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 044/190] powerpc/64s: Remove SAO feature from Power9 DD1 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 047/190] iwlwifi: split the handler and the wake parts of the notification infra Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 046/190] clk: ns2: Correct SDIO bits Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 048/190] iwlwifi: a000: fix memory offsets and lengths Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 050/190] KVM: PPC: Book3S PR: Exit KVM on failed mapping Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 049/190] scsi: virtio_scsi: Always try to read VPD pages Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 052/190] x86/reboot: Turn off KVM when halting a CPU Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 051/190] mwifiex: don't leak 'chan_stats' on reset Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 053/190] ARM: 8668/1: ftrace: Fix dynamic ftrace with DEBUG_RODATA and !FRAME_POINTER Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 054/190] irqchip/mips-gic: Separate IPI reservation & usage tracking Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 055/190] iommu/omap: Register driver before setting IOMMU ops Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 056/190] md/raid10: wait up frozen array in handle_write_completed Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 057/190] NFS: Fix missing pg_cleanup after nfs_pageio_cond_complete() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 059/190] e1000e: fix timing for 82579 Gigabit Ethernet controller Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 058/190] tcp: remove poll() flakes with FastOpen Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 060/190] ALSA: hda - Fix headset microphone detection for ASUS N551 and N751 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 061/190] IB/ipoib: Fix deadlock between ipoib_stop and mcast join flow Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 063/190] HSI: ssi_protocol: double free in ssip_pn_xmit() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 062/190] IB/ipoib: Update broadcast object if PKey value was changed in index 0 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 064/190] IB/mlx4: Take write semaphore when changing the vma struct Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 065/190] IB/mlx4: Change vma from shared to private Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 067/190] IB/mlx5: " Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 066/190] IB/mlx5: Take write semaphore when changing the vma struct Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 068/190] IB/mlx5: Set correct SL in completion for RoCE Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 069/190] ASoC: Intel: Skylake: Uninitialized variable in probe_codec() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 070/190] ibmvnic: Disable irq prior to close Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 071/190] netvsc: Deal with rescinded channels correctly Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 072/190] Fix driver usage of 128B WQEs when WQ_CREATE is V1 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 074/190] gpio: gpio-wcove: fix irq pending status bit width Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 073/190] Fix Express lane queue creation Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 077/190] netfilter: nf_ct_helper: permit cthelpers with different names via nfnetlink Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 075/190] netfilter: xt_CT: fix refcnt leak on error path Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 076/190] openvswitch: Delete conntrack entry clashing with an expectation Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 078/190] mmc: host: omap_hsmmc: checking for NULL instead of IS_ERR() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 079/190] tipc: check return value of nlmsg_new Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 080/190] wan: pc300too: abort path on failure Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 081/190] qlcnic: fix unchecked return value Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 082/190] netfilter: nft_dynset: continue to next expr if _OP_ADD succeeded Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 083/190] platform/x86: intel-vbtn: add volume up and down Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 084/190] scsi: mac_esp: Replace bogus memory barrier with spinlock Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 086/190] pNFS: Fix use after free issues in pnfs_do_read() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 087/190] xprtrdma: Cancel refresh worker during buffer shutdown Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 085/190] infiniband/uverbs: Fix integer overflows Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 088/190] NFS: don't try to cross a mountpount when there isn't one there Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 089/190] iio: st_pressure: st_accel: Initialise sensor platform data properly Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 090/190] mt7601u: check return value of alloc_skb Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 091/190] libertas: check return value of alloc_workqueue Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 093/190] Btrfs: fix incorrect space accounting after failure to insert inline extent Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 092/190] rndis_wlan: add return value validation Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 094/190] Btrfs: send, fix file hole not being preserved due to inline extent Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 095/190] Btrfs: fix extent map leak during fallocate error path Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 096/190] orangefs: do not wait for timeout if umounting Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 098/190] ACPICA: iasl: Fix IORT SMMU GSI disassembling Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 097/190] mac80211: don't parse encrypted management frames in ieee80211_frame_acked Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 099/190] iio: hid-sensor: fix return of -EINVAL on invalid values in ret or value Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 101/190] mfd: palmas: Reset the POWERHOLD mux during power off Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 100/190] dt-bindings: mfd: axp20x: Add "xpowers,master-mode" property for AXP806 PMICs Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 103/190] x86/KASLR: Fix kexec kernel boot crash when KASLR randomization fails Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 102/190] mtip32xx: use runtime tag to initialize command header Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 104/190] gpio: gpio-wcove: fix GPIO IRQ status mask Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 105/190] staging: unisys: visorhba: fix s-Par to boot with option CONFIG_VMAP_STACK set to y Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 107/190] ipvs: explicitly forbid ipv6 service/dest creation if ipv6 mod is disabled Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 106/190] staging: wilc1000: fix unchecked return value Sasha Levin
2018-03-08  4:59 ` Sasha Levin [this message]
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 110/190] netfilter: x_tables: unlock on error in xt_find_table_lock() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 111/190] ARM: DRA7: clockdomain: Change the CLKTRCTRL of CM_PCIE_CLKSTCTRL to SW_WKUP Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 109/190] mmc: sdhci-of-esdhc: limit SD clock for ls1012a/ls1046a Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 113/190] IB/hfi1: Fix softlockup issue Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 112/190] IB/rdmavt: restore IRQs on error path in rvt_create_ah() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 116/190] ACPI / PMIC: xpower: Fix power_table addresses Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 114/190] platform/x86: asus-wmi: try to set als by default Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 115/190] ipmi/watchdog: fix wdog hang on panic waiting for ipmi response Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 118/190] drm/nouveau/kms: Increase max retries in scanout position queries Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 117/190] drm/amdgpu: fix gpu reset crash Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 120/190] ixgbevf: fix size of queue stats length Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 119/190] jbd2: Fix lockdep splat with generic/270 test Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 122/190] soc/fsl/qe: round brg_freq to 1kHz granularity Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 121/190] net: ethernet: ucc_geth: fix MEM_PART_MURAM mode Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 123/190] Bluetooth: hci_ldisc: Add protocol check to hci_uart_dequeue() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 124/190] Bluetooth: hci_ldisc: Add protocol check to hci_uart_tx_wakeup() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 125/190] vxlan: correctly handle ipv6.disable module parameter Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 127/190] bnx2x: Align RX buffers Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 126/190] qed: Unlock on error in qed_vf_pf_acquire() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 128/190] power: supply: bq24190_charger: Add disable-reset device-property Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 130/190] power: supply: pda_power: move from timer to delayed_work Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 129/190] power: supply: isp1704: Fix unchecked return value of devm_kzalloc Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 131/190] Input: twl4030-pwrbutton - use correct device for irq request Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 132/190] IB/rxe: Don't clamp residual length to mtu Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 133/190] md/raid10: skip spare disk as 'first' disk Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 134/190] ACPI / power: Delay turning off unused power resources after suspend Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 136/190] tcm_fileio: Prevent information leak for short reads Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 135/190] ia64: fix module loading for gcc-5.4 Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 138/190] video: fbdev: udlfb: Fix buffer on stack Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 137/190] x86/xen: split xen_smp_prepare_boot_cpu() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 139/190] sm501fb: don't return zero on failure path in sm501fb_start() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 140/190] pNFS: Fix a deadlock when coalescing writes and returning the layout Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 142/190] cifs: small underflow in cnvrtDosUnixTm() Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 143/190] mm: fix check for reclaimable pages in PF_MEMALLOC reclaim throttling Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 141/190] net: hns: fix ethtool_get_strings overflow in hns driver Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 144/190] mm, vmstat: suppress pcp stats for unpopulated zones in zoneinfo Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 145/190] oom: improve oom disable handling Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 146/190] mm: hwpoison: call shake_page() after try_to_unmap() for mlocked page Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 147/190] rtc: ds1374: wdt: Fix issue with timeout scaling from secs to wdt ticks Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 149/190] ath10k: fix out of bounds access to local buffer Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 148/190] rtc: ds1374: wdt: Fix stop/start ioctl always returning -EINVAL Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 150/190] perf tests kmod-path: Don't fail if compressed modules aren't supported Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 151/190] block/mq: Cure cpu hotplug lock inversion Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 153/190] Bluetooth: btqcomsmd: Fix skb double free corruption Sasha Levin
2018-03-08  4:59 ` [PATCH AUTOSEL for 4.9 152/190] Bluetooth: hci_qca: Avoid setup failure on missing rampatch Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 154/190] media: c8sectpfe: fix potential NULL pointer dereference in c8sectpfe_timer_interrupt Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 155/190] drm/msm: fix leak in failed get_pages Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 156/190] dm: ensure bio submission follows a depth-first tree walk Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 157/190] RDMA/iwpm: Fix uninitialized error code in iwpm_send_mapinfo() Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 158/190] rtlwifi: rtl_pci: Fix the bug when inactiveps is enabled Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 159/190] media: bt8xx: Fix err 'bt878_probe()' Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 160/190] ath10k: handling qos at STA side based on AP WMM enable/disable Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 161/190] media: [RESEND] media: dvb-frontends: Add delay to Si2168 restart Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 162/190] qmi_wwan: set FLAG_SEND_ZLP to avoid network initiated disconnect Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 163/190] serial: 8250_dw: Disable clock on error Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 164/190] cros_ec: fix nul-termination for firmware build info Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 165/190] watchdog: Fix potential kref imbalance when opening watchdog Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 168/190] drm/tilcdc: ensure nonatomic iowrite64 is not used Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 166/190] platform/chrome: Use proper protocol transfer function Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 167/190] dmaengine: zynqmp_dma: Fix race condition in the probe Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 170/190] rtc: ac100: Fix multiple race conditions Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 169/190] mmc: avoid removing non-removable hosts during suspend Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 172/190] RDMA/cma: Use correct size when writing netlink stats Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 171/190] IB/ipoib: Avoid memory leak if the SA returns a different DGID Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 173/190] IB/umem: Fix use of npages/nmap fields Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 174/190] iser-target: avoid reinitializing rdma contexts for isert commands Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 175/190] vgacon: Set VGA struct resource types Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 176/190] omapdrm: panel: fix compatible vendor string for td028ttec1 Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 177/190] drm/omap: DMM: Check for DMM readiness after successful transaction commit Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 179/190] coresight: Fix disabling of CoreSight TPIU Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 178/190] pty: cancel pty slave port buf's work in tty_release Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 181/190] pinctrl: rockchip: enable clock when reading pin direction register Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 180/190] pinctrl: Really force states during suspend/resume Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 184/190] RDMA/ocrdma: Fix permissions for OCRDMA_RESET_STATS Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 183/190] ip6_vti: adjust vti mtu according to mtu of lower device Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 182/190] iommu/vt-d: clean up pr_irq if request_threaded_irq fails Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 186/190] nfsd4: permit layoutget of executable-only files Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 185/190] ARM: dts: aspeed-evb: Add unit name to memory node Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 188/190] clk: axi-clkgen: Correctly handle nocount bit in recalc_rate() Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 187/190] clk: Don't touch hardware when reparenting during registration Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 189/190] clk: si5351: Rename internal plls to avoid name collisions Sasha Levin
2018-03-08  5:00 ` [PATCH AUTOSEL for 4.9 190/190] dmaengine: ti-dma-crossbar: Fix event mapping for TPCC_EVT_MUX_60_63 Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180308045810.8041-108-alexander.levin@microsoft.com \
    --to=alexander.levin@microsoft.com \
    --cc=johannes.berg@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.kazior@tieto.com \
    --cc=mohammed@qti.qualcomm.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox