]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cfg80211: Purge frame registrations on iftype change
authorDenis Kenzior <denkenz@gmail.com>
Wed, 28 Aug 2019 21:11:10 +0000 (16:11 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 10 Dec 2019 18:01:20 +0000 (18:01 +0000)
commit c1d3ad84eae35414b6b334790048406bd6301b12 upstream.

Currently frame registrations are not purged, even when changing the
interface type.  This can lead to potentially weird situations where
frames possibly not allowed on a given interface type remain registered
due to the type switching happening after registration.

The kernel currently relies on userspace apps to actually purge the
registrations themselves, this is not something that the kernel should
rely on.

Add a call to cfg80211_mlme_purge_registrations() to forcefully remove
any registrations left over prior to switching the iftype.

Signed-off-by: Denis Kenzior <denkenz@gmail.com>
Link: https://lore.kernel.org/r/20190828211110.15005-1-denkenz@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/wireless/util.c

index 8b435bfc225fac054224aca1ddb1297002f2c62d..2d8e3d82ad7411a6ab793ee98d1f30b5836589fe 100644 (file)
@@ -926,6 +926,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
                }
 
                cfg80211_process_rdev_events(rdev);
+               cfg80211_mlme_purge_registrations(dev->ieee80211_ptr);
        }
 
        err = rdev_change_virtual_intf(rdev, dev, ntype, flags, params);