wifi: mac80211: pass roc->sdata to drv_cancel_remain_on_channel()
authorAnjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Thu, 8 Jun 2023 13:35:58 +0000 (16:35 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 Jun 2023 10:20:08 +0000 (12:20 +0200)
In suspend flow "sdata" is NULL, destroy all roc's which are started.
pass "roc->sdata" to drv_cancel_remain_on_channel() to avoid NULL
dereference and destroy that roc

Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230608163202.c678187a308c.Ic11578778655e273931efc5355d570a16465d1be@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/offchannel.c

index d78c82d..cdf991e 100644 (file)
@@ -8,7 +8,7 @@
  * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
  * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
  * Copyright 2009      Johannes Berg <johannes@sipsolutions.net>
- * Copyright (C) 2019, 2022 Intel Corporation
+ * Copyright (C) 2019, 2022-2023 Intel Corporation
  */
 #include <linux/export.h>
 #include <net/mac80211.h>
@@ -1014,7 +1014,7 @@ void ieee80211_roc_purge(struct ieee80211_local *local,
                if (roc->started) {
                        if (local->ops->remain_on_channel) {
                                /* can race, so ignore return value */
-                               drv_cancel_remain_on_channel(local, sdata);
+                               drv_cancel_remain_on_channel(local, roc->sdata);
                                ieee80211_roc_notify_destroy(roc);
                        } else {
                                roc->abort = true;