diff options
author | Johannes Berg <johannes.berg@intel.com> | 2016-04-26 13:47:08 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-04-27 10:06:58 +0200 |
commit | e6436be21e77e3659b4ff7e357ab5a8342d132d2 (patch) | |
tree | ebe51f19da789d00e5015d6d952110b74456006b | |
parent | 8f815cdde3e550e10c2736990d791f60c2ce43eb (diff) | |
download | op-kernel-dev-e6436be21e77e3659b4ff7e357ab5a8342d132d2.zip op-kernel-dev-e6436be21e77e3659b4ff7e357ab5a8342d132d2.tar.gz |
mac80211: fix statistics leak if dev_alloc_name() fails
In the case that dev_alloc_name() fails, e.g. because the name was
given by the user and already exists, we need to clean up properly
and free the per-CPU statistics. Fix that.
Cc: stable@vger.kernel.org
Fixes: 5a490510ba5f ("mac80211: use per-CPU TX/RX statistics")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/mac80211/iface.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 453b4e74..e1cb22c 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -1761,7 +1761,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name, ret = dev_alloc_name(ndev, ndev->name); if (ret < 0) { - free_netdev(ndev); + ieee80211_if_free(ndev); return ret; } @@ -1847,7 +1847,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name, ret = register_netdevice(ndev); if (ret) { - free_netdev(ndev); + ieee80211_if_free(ndev); return ret; } } |