]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: bridge: refcount fix
authorPatrick McHardy <kaber@trash.net>
Thu, 17 Sep 2009 11:58:29 +0000 (13:58 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 15:28:01 +0000 (08:28 -0700)
netfilter: bridge: refcount fix

Upstream commit f3abc9b9:

commit f216f082b2b37c4943f1e7c393e2786648d48f6f
([NETFILTER]: bridge netfilter: deal with martians correctly)
added a refcount leak on in_dev.

Instead of using in_dev_get(), we can use __in_dev_get_rcu(),
as netfilter hooks are running under rcu_read_lock(), as pointed
by Patrick.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/bridge/br_netfilter.c

index e4a418fcb35bfe3d163210f0ceeb19a09535e64c..9de46b4794a928e06e3bc199ac9c2de41cc1ef02 100644 (file)
@@ -357,7 +357,7 @@ static int br_nf_pre_routing_finish(struct sk_buff *skb)
                                },
                                .proto = 0,
                        };
-                       struct in_device *in_dev = in_dev_get(dev);
+                       struct in_device *in_dev = __in_dev_get_rcu(dev);
 
                        /* If err equals -EHOSTUNREACH the error is due to a
                         * martian destination or due to the fact that