Summary: | net80211: psq cleanup bug | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Vladimir Grbić <accounts> | ||||||
Component: | wireless | Assignee: | freebsd-wireless (Nobody) <wireless> | ||||||
Status: | Open --- | ||||||||
Severity: | Affects Only Me | CC: | adrian, ambrisko, bz | ||||||
Priority: | --- | ||||||||
Version: | 14.0-RELEASE | ||||||||
Hardware: | amd64 | ||||||||
OS: | Any | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 277512 | ||||||||
Attachments: |
|
Description
Vladimir Grbić
2024-04-30 04:12:38 UTC
I've had a private report from Doug about this a few weeks ago and had a quick look based on his findings. For him it happened with suspend/resume and another worksround helped to sort it out there for now. I had asked him to open a PR to track this in the end as I didn't have the time to sort it out on the spot. @ambrisko maybe you can add all your debugging/tracing to here? oh lord, the psq / node bug stuff again. I recognise this stuff :( oh lord, the psq / node bug stuff again. I recognise this stuff :( Created attachment 250517 [details]
After running my "panic.sh" script several times I hit the cb run after lock is destroyed.
The script I use to trigger the panic is
#!/bin/sh
set -x
sync; sync; sync
sudo /bin/echo || exit 1
sudo /etc/rc.d/dhclient stop wlan0
sudo /etc/rc.d/wpa_supplicant stop wlan0
sleep 1
sudo killall -9 wpa_supplicant
sleep 2
sudo ifconfig wlan0 destroy
if kldstat | grep iwlwifi
then
sudo devctl detach `pciconf -l | awk '/iwlwifi/ { print $1 }' | sed -e 's/:$//' -e 's/^.*@//'`
fi
sudo kldunload if_iwlwifi.ko
sudo kldload if_iwlwifi.ko
sudo ifconfig wlan0 create wlandev iwlwifi0 wlanmode sta regdomain FCC country US
sleep 1
sudo /etc/rc.d/wpa_supplicant restart wlan0
sleep 1
ifconfig wlan0
sleep 1
ifconfig wlan0
sleep 10
It doesn't happen every time. I added debug printf's to trace where the call back gets registered and run after the lock is destroyed.
I've also seen what appears to be leaking in that the init for the psq lock is called more then the clean up. I don't have that printf enabled in this log.
|