mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-24 22:03:16 -04:00
netfilter: ctnetlink: do not allow to reset helper on existing conntrack
This feature allows to reset a helper for an existing conntrack, but it
is not safe. This requires a synchronized_rcu() call after resetting the
helper, which is going to be expensive for a large batch of conntrack
entries. This also needs to call to the .destroy callback to release the
GRE/PPTP mappings to fix it.
This feature antedates the creation of the conntrack-tools and I cannot
find a good use-case for this. Given that I cannot find any user in the
netfilter.org userspace tree, I prefer to remove this feature.
Fixes: c1d10adb4a ("[NETFILTER]: Add ctnetlink port for nf_conntrack")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
@@ -1953,19 +1953,6 @@ static int ctnetlink_change_helper(struct nf_conn *ct,
|
||||
return err;
|
||||
}
|
||||
|
||||
if (!strcmp(helpname, "") && help) {
|
||||
helper = rcu_dereference(help->helper);
|
||||
if (helper) {
|
||||
/* we had a helper before ... */
|
||||
nf_ct_remove_expectations(ct);
|
||||
RCU_INIT_POINTER(help->helper, NULL);
|
||||
if (refcount_dec_and_test(&helper->ct_refcnt))
|
||||
kfree_rcu(helper, rcu);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return 0;
|
||||
}
|
||||
|
||||
helper = __nf_conntrack_helper_find(helpname, nf_ct_l3num(ct),
|
||||
nf_ct_protonum(ct));
|
||||
if (helper == NULL) {
|
||||
|
||||
Reference in New Issue
Block a user