On Wed, 2023-04-05 at 13:40 +0200, Michael Walle wrote: > > wilc_disconnect() is called from the cfg80211_ops::disconnect > callback. wilc_deinit() is called from net_device_ops::ndo_stop. > Is there any lock which prevents both functions be called in > parallel? I don't _think_ there's any common lock, ndo_stop() holds the RTNL, but cfg80211 for a normal nl80211 disconnect command will only briefly hold the RTNL and drop it again before calling into the driver. The internal flags here don't indicate requiring RTNL and that wouldn't make much sense either: { .cmd = NL80211_CMD_DISCONNECT, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = nl80211_disconnect, .flags = GENL_UNS_ADMIN_PERM, .internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV_UP), }, See commit a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver"). johannes