|
@@ -298,7 +298,6 @@ static void
|
|
|
destroy_conntrack(struct nf_conntrack *nfct)
|
|
|
{
|
|
|
struct nf_conn *ct = (struct nf_conn *)nfct;
|
|
|
- struct nf_conn_help *help = nfct_help(ct);
|
|
|
struct nf_conntrack_l4proto *l4proto;
|
|
|
typeof(nf_conntrack_destroyed) destroyed;
|
|
|
|
|
@@ -309,9 +308,6 @@ destroy_conntrack(struct nf_conntrack *nfct)
|
|
|
nf_conntrack_event(IPCT_DESTROY, ct);
|
|
|
set_bit(IPS_DYING_BIT, &ct->status);
|
|
|
|
|
|
- if (help && help->helper && help->helper->destroy)
|
|
|
- help->helper->destroy(ct);
|
|
|
-
|
|
|
/* To make sure we don't get any weird locking issues here:
|
|
|
* destroy_conntrack() MUST NOT be called with a write lock
|
|
|
* to nf_conntrack_lock!!! -HW */
|
|
@@ -353,6 +349,10 @@ destroy_conntrack(struct nf_conntrack *nfct)
|
|
|
static void death_by_timeout(unsigned long ul_conntrack)
|
|
|
{
|
|
|
struct nf_conn *ct = (void *)ul_conntrack;
|
|
|
+ struct nf_conn_help *help = nfct_help(ct);
|
|
|
+
|
|
|
+ if (help && help->helper && help->helper->destroy)
|
|
|
+ help->helper->destroy(ct);
|
|
|
|
|
|
write_lock_bh(&nf_conntrack_lock);
|
|
|
/* Inside lock so preempt is disabled on module removal path.
|