Patch "wifi: cfg80211: Set correct chandef when starting CAC" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    wifi: cfg80211: Set correct chandef when starting CAC

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     wifi-cfg80211-set-correct-chandef-when-starting-cac.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 09d43a6bff716467fad13cde8641ab665d172cc6
Author: Issam Hamdi <ih@xxxxxxxxxxxxxxxxxx>
Date:   Fri Aug 16 16:24:18 2024 +0200

    wifi: cfg80211: Set correct chandef when starting CAC
    
    [ Upstream commit 20361712880396e44ce80aaeec2d93d182035651 ]
    
    When starting CAC in a mode other than AP mode, it return a
    "WARNING: CPU: 0 PID: 63 at cfg80211_chandef_dfs_usable+0x20/0xaf [cfg80211]"
    caused by the chandef.chan being null at the end of CAC.
    
    Solution: Ensure the channel definition is set for the different modes
    when starting CAC to avoid getting a NULL 'chan' at the end of CAC.
    
     Call Trace:
      ? show_regs.part.0+0x14/0x16
      ? __warn+0x67/0xc0
      ? cfg80211_chandef_dfs_usable+0x20/0xaf [cfg80211]
      ? report_bug+0xa7/0x130
      ? exc_overflow+0x30/0x30
      ? handle_bug+0x27/0x50
      ? exc_invalid_op+0x18/0x60
      ? handle_exception+0xf6/0xf6
      ? exc_overflow+0x30/0x30
      ? cfg80211_chandef_dfs_usable+0x20/0xaf [cfg80211]
      ? exc_overflow+0x30/0x30
      ? cfg80211_chandef_dfs_usable+0x20/0xaf [cfg80211]
      ? regulatory_propagate_dfs_state.cold+0x1b/0x4c [cfg80211]
      ? cfg80211_propagate_cac_done_wk+0x1a/0x30 [cfg80211]
      ? process_one_work+0x165/0x280
      ? worker_thread+0x120/0x3f0
      ? kthread+0xc2/0xf0
      ? process_one_work+0x280/0x280
      ? kthread_complete_and_exit+0x20/0x20
      ? ret_from_fork+0x19/0x24
    
    Reported-by: Kretschmer Mathias <mathias.kretschmer@xxxxxxxxxxxxxxxxx>
    Signed-off-by: Issam Hamdi <ih@xxxxxxxxxxxxxxxxxx>
    Link: https://patch.msgid.link/20240816142418.3381951-1-ih@xxxxxxxxxxxxxxxxxx
    [shorten subject, remove OCB, reorder cases to match previous list]
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 4ce23762b1c95..9e74f249cb45f 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -10048,7 +10048,20 @@ static int nl80211_start_radar_detection(struct sk_buff *skb,
 
 	err = rdev_start_radar_detection(rdev, dev, &chandef, cac_time_ms);
 	if (!err) {
-		wdev->links[0].ap.chandef = chandef;
+		switch (wdev->iftype) {
+		case NL80211_IFTYPE_AP:
+		case NL80211_IFTYPE_P2P_GO:
+			wdev->links[0].ap.chandef = chandef;
+			break;
+		case NL80211_IFTYPE_ADHOC:
+			wdev->u.ibss.chandef = chandef;
+			break;
+		case NL80211_IFTYPE_MESH_POINT:
+			wdev->u.mesh.chandef = chandef;
+			break;
+		default:
+			break;
+		}
 		wdev->cac_started = true;
 		wdev->cac_start_time = jiffies;
 		wdev->cac_time_ms = cac_time_ms;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux