Skip to content

Commit 4a4dac1

Browse files
kuba-mooSasha Levin
authored and
Sasha Levin
committed
devlink: hold region lock when flushing snapshots
[ Upstream commit b4cafb3 ] Netdevsim triggers a splat on reload, when it destroys regions with snapshots pending: WARNING: CPU: 1 PID: 787 at net/core/devlink.c:6291 devlink_region_snapshot_del+0x12e/0x140 CPU: 1 PID: 787 Comm: devlink Not tainted 6.1.0-07460-g7ae9888d6e1c torvalds#580 RIP: 0010:devlink_region_snapshot_del+0x12e/0x140 Call Trace: <TASK> devl_region_destroy+0x70/0x140 nsim_dev_reload_down+0x2f/0x60 [netdevsim] devlink_reload+0x1f7/0x360 devlink_nl_cmd_reload+0x6ce/0x860 genl_family_rcv_msg_doit.isra.0+0x145/0x1c0 This is the locking assert in devlink_region_snapshot_del(), we're supposed to be holding the region->snapshot_lock here. Fixes: 2dec18a ("net: devlink: remove region snapshots list dependency on devlink->lock") Signed-off-by: Jakub Kicinski <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: David S. Miller <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 9db8d6f commit 4a4dac1

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

net/core/devlink.c

+2
Original file line numberDiff line numberDiff line change
@@ -11435,8 +11435,10 @@ void devl_region_destroy(struct devlink_region *region)
1143511435
devl_assert_locked(devlink);
1143611436

1143711437
/* Free all snapshots of region */
11438+
mutex_lock(&region->snapshot_lock);
1143811439
list_for_each_entry_safe(snapshot, ts, &region->snapshot_list, list)
1143911440
devlink_region_snapshot_del(region, snapshot);
11441+
mutex_unlock(&region->snapshot_lock);
1144011442

1144111443
list_del(&region->list);
1144211444
mutex_destroy(&region->snapshot_lock);

0 commit comments

Comments
 (0)