diff mbox

[net] net: sched: fix act_ipt for LOG target

Message ID 1457012054-18012-1-git-send-email-psutter@redhat.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Phil Sutter March 3, 2016, 1:34 p.m. UTC
From: Phil Sutter <phil@nwl.cc>

Before calling the destroy() or target() callbacks, the family parameter
field has to be initialized. Otherwise at least the LOG target will
refuse to work and upon removal oops the kernel.

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Phil Sutter <phil@nwl.cc>
---
 net/sched/act_ipt.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jamal Hadi Salim March 3, 2016, 2:25 p.m. UTC | #1
On 16-03-03 08:34 AM, Phil Sutter wrote:
> From: Phil Sutter <phil@nwl.cc>
>
> Before calling the destroy() or target() callbacks, the family parameter
> field has to be initialized. Otherwise at least the LOG target will
> refuse to work and upon removal oops the kernel.
>
> Cc: Jamal Hadi Salim <jhs@mojatatu.com>
> Signed-off-by: Phil Sutter <phil@nwl.cc>

Caveat: ipt has not been receiving a lot of love. Thanks for showing
it some love. If indeed you have tested this with the LOG target, then:

Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>

cheers,
jamal
David Miller March 7, 2016, 3:58 a.m. UTC | #2
From: Phil Sutter <psutter@redhat.com>
Date: Thu,  3 Mar 2016 14:34:14 +0100

> From: Phil Sutter <phil@nwl.cc>
> 
> Before calling the destroy() or target() callbacks, the family parameter
> field has to be initialized. Otherwise at least the LOG target will
> refuse to work and upon removal oops the kernel.
> 
> Cc: Jamal Hadi Salim <jhs@mojatatu.com>
> Signed-off-by: Phil Sutter <phil@nwl.cc>

Applied.
diff mbox

Patch

diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c
index 89c41a1f35894..350e134cffb32 100644
--- a/net/sched/act_ipt.c
+++ b/net/sched/act_ipt.c
@@ -66,6 +66,7 @@  static void ipt_destroy_target(struct xt_entry_target *t)
 	struct xt_tgdtor_param par = {
 		.target   = t->u.kernel.target,
 		.targinfo = t->data,
+		.family   = NFPROTO_IPV4,
 	};
 	if (par.target->destroy != NULL)
 		par.target->destroy(&par);
@@ -219,6 +220,7 @@  static int tcf_ipt(struct sk_buff *skb, const struct tc_action *a,
 	par.hooknum  = ipt->tcfi_hook;
 	par.target   = ipt->tcfi_t->u.kernel.target;
 	par.targinfo = ipt->tcfi_t->data;
+	par.family   = NFPROTO_IPV4;
 	ret = par.target->target(skb, &par);
 
 	switch (ret) {