wifi: cfg80211: cancel wiphy_work before freeing wiphy
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Thu, 6 Mar 2025 10:37:59 +0000 (12:37 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 7 Mar 2025 08:57:39 +0000 (09:57 +0100)
commit72d520476a2fab6f3489e8388ab524985d6c4b90
treeeb5e6895e0d38e829d1bda7045ed49657b8025af
parent9a267ce4a3fca93a34a8881046f97bcf472228c8
wifi: cfg80211: cancel wiphy_work before freeing wiphy

A wiphy_work can be queued from the moment the wiphy is allocated and
initialized (i.e. wiphy_new_nm). When a wiphy_work is queued, the
rdev::wiphy_work is getting queued.

If wiphy_free is called before the rdev::wiphy_work had a chance to run,
the wiphy memory will be freed, and then when it eventally gets to run
it'll use invalid memory.

Fix this by canceling the work before freeing the wiphy.

Fixes: a3ee4dc84c4e ("wifi: cfg80211: add a work abstraction with special semantics")
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Link: https://patch.msgid.link/20250306123626.efd1d19f6e07.I48229f96f4067ef73f5b87302335e2fd750136c9@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/core.c