[snip] Please fix coding style, particularly indentation. > +static void cfg80211_disconnect_wk(struct work_struct *work) > +{ > + struct cfg80211_registered_device *rdev; > + struct wireless_dev *wdev; > + > + wdev = container_of(work, struct wireless_dev, disconnect_wk); > + rdev = wiphy_to_rdev(wdev->wiphy); Those should also be possible as initializers on the same line, I guess? It might also be worthwhile moving this function into a better file, even if then it needs a prototype in core.h (it can't be inlined anyway since it's called through a function pointer in the work struct) > + if (!wdev->netdev) > + return; This obviously cannot happen. All the code you added to nl80211.c is racy. johannes