[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