diff options
| author | Christian Lamparter <chunkeey@googlemail.com> | 2011-06-30 21:08:43 +0200 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2011-07-05 15:26:53 -0400 | 
| commit | 5e34069cc4cf0d38abfc38e19ad4715036de1540 (patch) | |
| tree | f0f0e4805bcc088c7820068c3c306998b3915693 | |
| parent | 1205f5438f5a9a2dad3a29aa1c015e7bbd3b2b2b (diff) | |
| download | olio-linux-3.10-5e34069cc4cf0d38abfc38e19ad4715036de1540.tar.xz olio-linux-3.10-5e34069cc4cf0d38abfc38e19ad4715036de1540.zip  | |
mac80211: fix smatch complains
mlme.c
	l.757 ieee80211_dynamic_ps_enable_work(11)
	variable dereferenced before check 'sdata'
mesh_pathtbl.c
	l.650 mesh_path_del(20) double lock 'bottom_half'
	l.663 mesh_path_del(33) double unlock 'bottom_half'
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | net/mac80211/mesh_pathtbl.c | 4 | ||||
| -rw-r--r-- | net/mac80211/mlme.c | 4 | 
2 files changed, 5 insertions, 3 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index 0d2faacc3e8..068ee651825 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c @@ -647,12 +647,12 @@ int mesh_path_del(u8 *addr, struct ieee80211_sub_if_data *sdata)  		mpath = node->mpath;  		if (mpath->sdata == sdata &&  		    memcmp(addr, mpath->dst, ETH_ALEN) == 0) { -			spin_lock_bh(&mpath->state_lock); +			spin_lock(&mpath->state_lock);  			mpath->flags |= MESH_PATH_RESOLVING;  			hlist_del_rcu(&node->list);  			call_rcu(&node->rcu, mesh_path_node_reclaim);  			atomic_dec(&tbl->entries); -			spin_unlock_bh(&mpath->state_lock); +			spin_unlock(&mpath->state_lock);  			goto enddel;  		}  	} diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index b87420088c3..182cda66ebe 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -749,7 +749,7 @@ void ieee80211_dynamic_ps_enable_work(struct work_struct *work)  		container_of(work, struct ieee80211_local,  			     dynamic_ps_enable_work);  	struct ieee80211_sub_if_data *sdata = local->ps_sdata; -	struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; +	struct ieee80211_if_managed *ifmgd;  	unsigned long flags;  	int q; @@ -757,6 +757,8 @@ void ieee80211_dynamic_ps_enable_work(struct work_struct *work)  	if (!sdata)  		return; +	ifmgd = &sdata->u.mgd; +  	if (local->hw.conf.flags & IEEE80211_CONF_PS)  		return;  |