diff options
-rw-r--r-- | net/sched/cls_matchall.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index 9dc26c32cf32..f35177b48373 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c | |||
@@ -120,27 +120,17 @@ static int mall_set_parms(struct net *net, struct tcf_proto *tp, | |||
120 | unsigned long base, struct nlattr **tb, | 120 | unsigned long base, struct nlattr **tb, |
121 | struct nlattr *est, bool ovr) | 121 | struct nlattr *est, bool ovr) |
122 | { | 122 | { |
123 | struct tcf_exts e; | ||
124 | int err; | 123 | int err; |
125 | 124 | ||
126 | err = tcf_exts_init(&e, TCA_MATCHALL_ACT, 0); | 125 | err = tcf_exts_validate(net, tp, tb, est, &head->exts, ovr); |
127 | if (err) | ||
128 | return err; | ||
129 | err = tcf_exts_validate(net, tp, tb, est, &e, ovr); | ||
130 | if (err < 0) | 126 | if (err < 0) |
131 | goto errout; | 127 | return err; |
132 | 128 | ||
133 | if (tb[TCA_MATCHALL_CLASSID]) { | 129 | if (tb[TCA_MATCHALL_CLASSID]) { |
134 | head->res.classid = nla_get_u32(tb[TCA_MATCHALL_CLASSID]); | 130 | head->res.classid = nla_get_u32(tb[TCA_MATCHALL_CLASSID]); |
135 | tcf_bind_filter(tp, &head->res, base); | 131 | tcf_bind_filter(tp, &head->res, base); |
136 | } | 132 | } |
137 | |||
138 | tcf_exts_change(tp, &head->exts, &e); | ||
139 | |||
140 | return 0; | 133 | return 0; |
141 | errout: | ||
142 | tcf_exts_destroy(&e); | ||
143 | return err; | ||
144 | } | 134 | } |
145 | 135 | ||
146 | static int mall_change(struct net *net, struct sk_buff *in_skb, | 136 | static int mall_change(struct net *net, struct sk_buff *in_skb, |