PR: 277095
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Details
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 56068 Build 52957: arc lint + arc unit
Event Timeline
sys/net80211/ieee80211_node.c | ||
---|---|---|
2209 | That leaves all the following ni->*key* checks unprotected. |
sys/net80211/ieee80211_node.c | ||
---|---|---|
2209 |
The original node lock in net80211/ seems to protect the node table only. Look around, it looks, for example the "ni->ni_ucastkey" is not protected in ieee80211_ioctl_getkey() and ieee80211_ioctl_setkey(). Does it mean we need to add additional lock to protect the ni->*key*? |
sys/net80211/ieee80211_node.c | ||
---|---|---|
2209 | Ok, bad explanation of me. It makes sure your ni doesn't go away or more importantly prevents other invariants of re-use which exist in net80211. The malloc issue from the PR on this path is fixed in D43648. I wonder how wpi or rtwn or others do these "downcalls"? A quick glance suggests that they are expecting to sleep in that call path too? |
sys/net80211/ieee80211_node.c | ||
---|---|---|
2209 |
OK. Looks wpi does that. Also look at ieee80211_drain(), if I remember correctly, m_freem() may sleep, right? { .... IEEE80211_NODE_LOCK(nt); .... m_freem() IEEE80211_NODE_UNLOCK .... } |