The new_ctx pointer is set only for non-chanctx drivers. This yielded a crash for chanctx-based drivers during channel switch finalization: BUG: unable to handle kernel NULL pointer dereference at 0000000000000020 IP: ieee80211_vif_use_reserved_switch+0x71c/0xb00 [mac80211] Use an adequate chanctx pointer to fix this.
Unified · Split
| @@ -1444,7 +1444,7 @@ ieee80211_vif_use_reserved_switch(struct ieee80211_local *local) · 1443 unmodified lines | |||
| 1444 | 1444 | ||
| 1445 | list_del(&sdata->reserved_chanctx_list); | 1445 | list_del(&sdata->reserved_chanctx_list); |
| 1446 | list_move(&sdata->assigned_chanctx_list, | 1446 | list_move(&sdata->assigned_chanctx_list, |
| 1447 | &new_ctx->assigned_vifs); | 1447 | &ctx->assigned_vifs); |
| 1448 | sdata->reserved_chanctx = NULL; | 1448 | sdata->reserved_chanctx = NULL; |
| 1449 | 1449 | ||
| 1450 | ieee80211_vif_chanctx_reservation_complete(sdata); | 1450 | ieee80211_vif_chanctx_reservation_complete(sdata); |