1af0a0948e
devlink compat code needs to drop rtnl_lock to take devlink->lock to ensure correct lock ordering. This is problematic because we're not strictly guaranteed that the netdev will not disappear after we re-lock. It may open a possibility of nested ->begin / ->complete calls. Instead of calling into devlink under rtnl_lock take a ref on the devlink instance and make the call after we've dropped rtnl_lock. We (continue to) assume that netdevs have an implicit reference on the devlink returned from ndo_get_devlink_port Note that ndo_get_devlink_port will now get called under rtnl_lock. That should be fine since none of the drivers seem to be taking serious locks inside ndo_get_devlink_port. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
bitset.c | ||
bitset.h | ||
cabletest.c | ||
channels.c | ||
coalesce.c | ||
common.c | ||
common.h | ||
debug.c | ||
eee.c | ||
eeprom.c | ||
features.c | ||
fec.c | ||
ioctl.c | ||
linkinfo.c | ||
linkmodes.c | ||
linkstate.c | ||
Makefile | ||
module.c | ||
netlink.c | ||
netlink.h | ||
pause.c | ||
phc_vclocks.c | ||
privflags.c | ||
rings.c | ||
stats.c | ||
strset.c | ||
tsinfo.c | ||
tunnels.c | ||
wol.c |