]> git.baikalelectronics.ru Git - kernel.git/commitdiff
cfg80211: fix double-free after changing network namespace
authorStefan Bühler <source@stbuehler.de>
Tue, 26 Nov 2019 10:05:44 +0000 (11:05 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 13 Dec 2019 09:08:09 +0000 (10:08 +0100)
If wdev->wext.keys was initialized it didn't get reset to NULL on
unregister (and it doesn't get set in cfg80211_init_wdev either), but
wdev is reused if unregister was triggered through
cfg80211_switch_netns.

The next unregister (for whatever reason) will try to free
wdev->wext.keys again.

Signed-off-by: Stefan Bühler <source@stbuehler.de>
Link: https://lore.kernel.org/r/20191126100543.782023-1-stefan.buehler@tik.uni-stuttgart.de
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/core.c

index 350513744575a4387d283f3533c23a3f746e999f..3e25229a059de83505860e9a4c9ca9428c57153b 100644 (file)
@@ -1102,6 +1102,7 @@ static void __cfg80211_unregister_wdev(struct wireless_dev *wdev, bool sync)
 
 #ifdef CONFIG_CFG80211_WEXT
        kzfree(wdev->wext.keys);
+       wdev->wext.keys = NULL;
 #endif
        /* only initialized if we have a netdev */
        if (wdev->netdev)