diff options
Diffstat (limited to 'kernel/net/sched/cls_api.c')
-rw-r--r-- | kernel/net/sched/cls_api.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/net/sched/cls_api.c b/kernel/net/sched/cls_api.c index a75864d93..20b2f867c 100644 --- a/kernel/net/sched/cls_api.c +++ b/kernel/net/sched/cls_api.c @@ -137,13 +137,15 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n) unsigned long cl; unsigned long fh; int err; - int tp_created = 0; + int tp_created; if ((n->nlmsg_type != RTM_GETTFILTER) && !netlink_ns_capable(skb, net->user_ns, CAP_NET_ADMIN)) return -EPERM; replay: + tp_created = 0; + err = nlmsg_parse(n, sizeof(*t), tca, TCA_MAX, NULL); if (err < 0) return err; @@ -315,7 +317,8 @@ replay: if (err == 0) { struct tcf_proto *next = rtnl_dereference(tp->next); - tfilter_notify(net, skb, n, tp, fh, RTM_DELTFILTER); + tfilter_notify(net, skb, n, tp, + t->tcm_handle, RTM_DELTFILTER); if (tcf_destroy(tp, false)) RCU_INIT_POINTER(*back, next); } |