diff --git a/drivers/net/wireless/virtual/mac80211_hwsim_main.c b/drivers/net/wireless/virtual/mac80211_hwsim_main.c index 02b6d81cc..cef2f4b08 100644 --- a/drivers/net/wireless/virtual/mac80211_hwsim_main.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim_main.c @@ -7150,6 +7150,13 @@ static struct genl_family hwsim_genl_family __ro_after_init = { .maxattr = HWSIM_ATTR_MAX, .policy = hwsim_genl_policy, .netnsok = true, + /* + * Avoid holding the global genl mutex while creating a radio, + * since that takes RTNL in ieee80211_register_hw(). A task + * holding RTNL and waiting for the genl mutex would otherwise + * deadlock with us. + */ + .parallel_ops = true, .module = THIS_MODULE, .small_ops = hwsim_ops, .n_small_ops = ARRAY_SIZE(hwsim_ops),