diff options
author | Changli Gao <xiaosuo@gmail.com> | 2009-11-05 08:51:31 -0500 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2009-11-05 08:51:31 -0500 |
commit | 5ae27aa2b16478a84d833ab4065798e752941c5a (patch) | |
tree | b3b50c6401a3b0579097cc21ce9c15a13d881dcf /net/netfilter | |
parent | 9481721be10a1bfd1ee9ccf507eecd7f37caa5ec (diff) |
netfilter: nf_conntrack: avoid additional compare.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/netfilter')
-rw-r--r-- | net/netfilter/nf_conntrack_core.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 7c9ec3dee96e..8e572d7c08c5 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
@@ -511,11 +511,17 @@ static noinline int early_drop(struct net *net, unsigned int hash) | |||
511 | cnt++; | 511 | cnt++; |
512 | } | 512 | } |
513 | 513 | ||
514 | if (ct && unlikely(nf_ct_is_dying(ct) || | 514 | if (ct != NULL) { |
515 | !atomic_inc_not_zero(&ct->ct_general.use))) | 515 | if (likely(!nf_ct_is_dying(ct) && |
516 | ct = NULL; | 516 | atomic_inc_not_zero(&ct->ct_general.use))) |
517 | if (ct || cnt >= NF_CT_EVICTION_RANGE) | 517 | break; |
518 | else | ||
519 | ct = NULL; | ||
520 | } | ||
521 | |||
522 | if (cnt >= NF_CT_EVICTION_RANGE) | ||
518 | break; | 523 | break; |
524 | |||
519 | hash = (hash + 1) % nf_conntrack_htable_size; | 525 | hash = (hash + 1) % nf_conntrack_htable_size; |
520 | } | 526 | } |
521 | rcu_read_unlock(); | 527 | rcu_read_unlock(); |