From: Eric Dumazet Date: Mon, 22 Aug 2011 06:05:59 +0000 (+0000) Subject: bridge: fix a possible net_device leak X-Git-Tag: v3.0.5~69 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=5ee858c9ab53a4f6b12a095a4982793d4f417f56;p=karo-tx-linux.git bridge: fix a possible net_device leak [ Upstream commit 11f3a6bdc2528d1ce2af50202dbf7138fdee1b34 ] Jan Beulich reported a possible net_device leak in bridge code after commit bb900b27a2f4 (bridge: allow creating bridge devices with netlink) Reported-by: Jan Beulich Signed-off-by: Eric Dumazet Acked-by: Stephen Hemminger Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 1bacca4cb676..6f156c199998 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c @@ -231,6 +231,7 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br, int br_add_bridge(struct net *net, const char *name) { struct net_device *dev; + int res; dev = alloc_netdev(sizeof(struct net_bridge), name, br_dev_setup); @@ -240,7 +241,10 @@ int br_add_bridge(struct net *net, const char *name) dev_net_set(dev, net); - return register_netdev(dev); + res = register_netdev(dev); + if (res) + free_netdev(dev); + return res; } int br_del_bridge(struct net *net, const char *name)