cfg80211: fix phy80211 symlink creation
When I moved around the code here, I neglected that we could still
call register_netdev() or similar without the wiphy mutex held,
which then calls cfg80211_register_wdev() - that's also done from
cfg80211_register_netdevice(), but the phy80211 symlink creation
was only there. Now, the symlink isn't needed for a *pure* wdev,
but a netdev not registered via cfg80211_register_wdev() should
still have the symlink, so move the creation to the right place.
Cc: stable@vger.kernel.org
Fixes: 2fe8ef1062
("cfg80211: change netdev registration/unregistration semantics")
Link: https://lore.kernel.org/r/20210608113226.a5dc4c1e488c.Ia42fe663cefe47b0883af78c98f284c5555bbe5d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Родитель
adaed1b9da
Коммит
43076c1e07
|
@ -1340,6 +1340,11 @@ void cfg80211_register_wdev(struct cfg80211_registered_device *rdev,
|
|||
rdev->devlist_generation++;
|
||||
wdev->registered = true;
|
||||
|
||||
if (wdev->netdev &&
|
||||
sysfs_create_link(&wdev->netdev->dev.kobj, &rdev->wiphy.dev.kobj,
|
||||
"phy80211"))
|
||||
pr_err("failed to add phy80211 symlink to netdev!\n");
|
||||
|
||||
nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
|
||||
}
|
||||
|
||||
|
@ -1365,14 +1370,6 @@ int cfg80211_register_netdevice(struct net_device *dev)
|
|||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
|
||||
"phy80211")) {
|
||||
pr_err("failed to add phy80211 symlink to netdev!\n");
|
||||
unregister_netdevice(dev);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
cfg80211_register_wdev(rdev, wdev);
|
||||
ret = 0;
|
||||
out:
|
||||
|
|
Загрузка…
Ссылка в новой задаче