mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
devlink: Add device lock assert in reload operation
Add an assert to verify that the device lock is always held throughout reload operations. Tested the following flows with netdevsim and mlxsw while lockdep is enabled: netdevsim: # echo "10 1" > /sys/bus/netdevsim/new_device # devlink dev reload netdevsim/netdevsim10 # ip netns add bla # devlink dev reload netdevsim/netdevsim10 netns bla # ip netns del bla # echo 10 > /sys/bus/netdevsim/del_device mlxsw: # devlink dev reload pci/0000:01:00.0 # ip netns add bla # devlink dev reload pci/0000:01:00.0 netns bla # ip netns del bla # echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/remove # echo 1 > /sys/bus/pci/rescan Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bf6b200bc8
commit
527a07e176
@ -4,6 +4,7 @@
|
||||
* Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <net/genetlink.h>
|
||||
#include <net/sock.h>
|
||||
#include "devl_internal.h"
|
||||
@ -433,6 +434,13 @@ int devlink_reload(struct devlink *devlink, struct net *dest_net,
|
||||
struct net *curr_net;
|
||||
int err;
|
||||
|
||||
/* Make sure the reload operations are invoked with the device lock
|
||||
* held to allow drivers to trigger functionality that expects it
|
||||
* (e.g., PCI reset) and to close possible races between these
|
||||
* operations and probe/remove.
|
||||
*/
|
||||
device_lock_assert(devlink->dev);
|
||||
|
||||
memcpy(remote_reload_stats, devlink->stats.remote_reload_stats,
|
||||
sizeof(remote_reload_stats));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user