In fdb_delete, it will send rtnl msg, so before that, we should hold rtnl_lock in the function that call it in sysfs.
Signed-off-by: Xin Long <lucien....@gmail.com> --- net/bridge/br_sysfs_br.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c index 6b80914..095a751 100644 --- a/net/bridge/br_sysfs_br.c +++ b/net/bridge/br_sysfs_br.c @@ -345,7 +345,12 @@ static ssize_t flush_store(struct device *d, if (!ns_capable(dev_net(br->dev)->user_ns, CAP_NET_ADMIN)) return -EPERM; + if (!rtnl_trylock()) + return restart_syscall(); + br_fdb_flush(br); + rtnl_unlock(); + return len; } static DEVICE_ATTR_WO(flush); -- 2.1.0