diff options
Diffstat (limited to 'net/sched/cls_api.c')
| -rw-r--r-- | net/sched/cls_api.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 9a04b981bc1..9d71d4ded53 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -141,7 +141,12 @@ static int tc_ctl_tfilter(struct sk_buff *skb, struct nlmsghdr *n)  	if ((n->nlmsg_type != RTM_GETTFILTER) && !capable(CAP_NET_ADMIN))  		return -EPERM; +  replay: +	err = nlmsg_parse(n, sizeof(*t), tca, TCA_MAX, NULL); +	if (err < 0) +		return err; +  	t = nlmsg_data(n);  	protocol = TC_H_MIN(t->tcm_info);  	prio = TC_H_MAJ(t->tcm_info); @@ -164,10 +169,6 @@ replay:  	if (dev == NULL)  		return -ENODEV; -	err = nlmsg_parse(n, sizeof(*t), tca, TCA_MAX, NULL); -	if (err < 0) -		return err; -  	/* Find qdisc */  	if (!parent) {  		q = dev->qdisc;  |