From: jbeulich@novell.com
Subject: Module use count must be updated as bridges are created/destroyed
Patch-mainline: unknown
References: 267651
Otherwise 'modprobe -r' on a module having a dependency on bridge will
implicitly unload bridge, bringing down all connectivity that was using
bridges.
---
net/bridge/br_if.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -239,12 +239,19 @@ int br_add_bridge(struct net *net, const
if (!dev)
return -ENOMEM;
+ if (!try_module_get(THIS_MODULE)) {
+ free_netdev(dev);
+ return -ENOENT;
+ }
+
dev_net_set(dev, net);
dev->rtnl_link_ops = &br_link_ops;
res = register_netdev(dev);
- if (res)
+ if (res) {
free_netdev(dev);
+ module_put(THIS_MODULE);
+ }
return res;
}
@@ -272,6 +279,8 @@ int br_del_bridge(struct net *net, const
br_dev_delete(dev, NULL);
rtnl_unlock();
+ if (ret == 0)
+ module_put(THIS_MODULE);
return ret;
}