diff options
author | Michal Miroslaw <mirq-linux@rere.qmqm.pl> | 2007-03-04 15:58:15 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-03-05 13:25:21 -0800 |
commit | ed32abeaf3a3da79b63af6a75f0bd0aa7e7eed9e (patch) | |
tree | 9fe8dab9db6b1dc2ddebd508cddade025de25138 | |
parent | d3ab4298aa136d07219664d563d8decf0e75693f (diff) | |
download | op-kernel-dev-ed32abeaf3a3da79b63af6a75f0bd0aa7e7eed9e.zip op-kernel-dev-ed32abeaf3a3da79b63af6a75f0bd0aa7e7eed9e.tar.gz |
[NETFILTER]: nfnetlink_log: fix reference leak
Stop reference leaking in nfulnl_log_packet(). If we start a timer we
are already taking another reference.
Signed-off-by: Michal Miroslaw <mirq-linux@rere.qmqm.pl>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/netfilter/nfnetlink_log.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index b8eab0d..62c3f31 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c @@ -711,15 +711,16 @@ nfulnl_log_packet(unsigned int pf, inst->timer.expires = jiffies + (inst->flushtimeout*HZ/100); add_timer(&inst->timer); } - spin_unlock_bh(&inst->lock); +unlock_and_release: + spin_unlock_bh(&inst->lock); + instance_put(inst); return; alloc_failure: - spin_unlock_bh(&inst->lock); - instance_put(inst); UDEBUG("error allocating skb\n"); /* FIXME: statistics */ + goto unlock_and_release; } static int |