wifi: cfg80211: ocb: don't leave if not joined
authorJohannes Berg <johannes.berg@intel.com>
Tue, 15 Aug 2023 16:32:03 +0000 (18:32 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 22 Aug 2023 19:40:39 +0000 (21:40 +0200)
If there's no OCB state, don't ask the driver/mac80211 to
leave, since that's just confusing. Since set/clear the
chandef state, that's a simple check.

Reported-by: syzbot+09d1cd2f71e6dd3bfd2c@syzkaller.appspotmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/ocb.c

index 27a1732..29afaf3 100644 (file)
@@ -68,6 +68,9 @@ int __cfg80211_leave_ocb(struct cfg80211_registered_device *rdev,
        if (!rdev->ops->leave_ocb)
                return -EOPNOTSUPP;
 
+       if (!wdev->u.ocb.chandef.chan)
+               return -ENOTCONN;
+
        err = rdev_leave_ocb(rdev, dev);
        if (!err)
                memset(&wdev->u.ocb.chandef, 0, sizeof(wdev->u.ocb.chandef));