From 3a74a2cda73ffd357fb77f29094a10da0ace1164 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 6 Sep 2005 15:10:23 -0700 Subject: [PATCH] --- yaml --- r: 7551 b: refs/heads/master c: 91c46e2e60da0b43a1e8740729737318862f64eb h: refs/heads/master i: 7549: 01a69357a527f81b19dcb98d83278f3816edb742 7547: d2b335b8ff1700481447053e1ac17ea704e4346c 7543: 3a202d604603c20d58e607869dde3f01b72ae00f 7535: f43e23301dab6a3fe2bb5e1130e3296908ec6d03 7519: 9f779d5c9a6f2030ccb93b08818baf2150ef20e7 7487: 269c217537f09581daeb3e1acf15f3a42b2ea35a 7423: 6decc40e63e8bfa2fb56ef482817081a20f0a970 v: v3 --- [refs] | 2 +- trunk/net/ipv4/netfilter/ip_conntrack_core.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index eb19d104f9ef..45c0c50b21d4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e7dfb09a3624a32df2dd00683875d0e56406a603 +refs/heads/master: 91c46e2e60da0b43a1e8740729737318862f64eb diff --git a/trunk/net/ipv4/netfilter/ip_conntrack_core.c b/trunk/net/ipv4/netfilter/ip_conntrack_core.c index e23e8ca476c0..babce304c619 100644 --- a/trunk/net/ipv4/netfilter/ip_conntrack_core.c +++ b/trunk/net/ipv4/netfilter/ip_conntrack_core.c @@ -938,6 +938,9 @@ void ip_conntrack_unexpect_related(struct ip_conntrack_expect *exp) write_unlock_bh(&ip_conntrack_lock); } +/* We don't increase the master conntrack refcount for non-fulfilled + * conntracks. During the conntrack destruction, the expectations are + * always killed before the conntrack itself */ struct ip_conntrack_expect *ip_conntrack_expect_alloc(struct ip_conntrack *me) { struct ip_conntrack_expect *new; @@ -948,17 +951,14 @@ struct ip_conntrack_expect *ip_conntrack_expect_alloc(struct ip_conntrack *me) return NULL; } new->master = me; - atomic_inc(&new->master->ct_general.use); atomic_set(&new->use, 1); return new; } void ip_conntrack_expect_put(struct ip_conntrack_expect *exp) { - if (atomic_dec_and_test(&exp->use)) { - ip_conntrack_put(exp->master); + if (atomic_dec_and_test(&exp->use)) kmem_cache_free(ip_conntrack_expect_cachep, exp); - } } static void ip_conntrack_expect_insert(struct ip_conntrack_expect *exp)