|
@@ -607,13 +607,10 @@ static void nf_nat_move_storage(struct nf_conn *conntrack, void *old)
|
|
struct nf_conn_nat *new_nat = nf_ct_ext_find(conntrack, NF_CT_EXT_NAT);
|
|
struct nf_conn_nat *new_nat = nf_ct_ext_find(conntrack, NF_CT_EXT_NAT);
|
|
struct nf_conn_nat *old_nat = (struct nf_conn_nat *)old;
|
|
struct nf_conn_nat *old_nat = (struct nf_conn_nat *)old;
|
|
struct nf_conn *ct = old_nat->ct;
|
|
struct nf_conn *ct = old_nat->ct;
|
|
- unsigned int srchash;
|
|
|
|
|
|
|
|
- if (!(ct->status & IPS_NAT_DONE_MASK))
|
|
|
|
|
|
+ if (!ct || !(ct->status & IPS_NAT_DONE_MASK))
|
|
return;
|
|
return;
|
|
|
|
|
|
- srchash = hash_by_src(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
|
|
|
|
-
|
|
|
|
write_lock_bh(&nf_nat_lock);
|
|
write_lock_bh(&nf_nat_lock);
|
|
hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
|
|
hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
|
|
new_nat->ct = ct;
|
|
new_nat->ct = ct;
|