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

Reply via email to