diff options
-rw-r--r-- | include/net/pkt_cls.h | 2 | ||||
-rw-r--r-- | net/sched/cls_api.c | 9 | ||||
-rw-r--r-- | net/sched/cls_basic.c | 2 | ||||
-rw-r--r-- | net/sched/cls_bpf.c | 3 | ||||
-rw-r--r-- | net/sched/cls_cgroup.c | 2 | ||||
-rw-r--r-- | net/sched/cls_flow.c | 2 | ||||
-rw-r--r-- | net/sched/cls_flower.c | 3 | ||||
-rw-r--r-- | net/sched/cls_fw.c | 2 | ||||
-rw-r--r-- | net/sched/cls_matchall.c | 3 | ||||
-rw-r--r-- | net/sched/cls_route.c | 2 | ||||
-rw-r--r-- | net/sched/cls_rsvp.h | 3 | ||||
-rw-r--r-- | net/sched/cls_tcindex.c | 2 | ||||
-rw-r--r-- | net/sched/cls_u32.c | 2 |
13 files changed, 21 insertions, 16 deletions
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index e5dafa5ee1b2..0e3b61016931 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h | |||
@@ -416,7 +416,7 @@ tcf_exts_exec(struct sk_buff *skb, struct tcf_exts *exts, | |||
416 | 416 | ||
417 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, | 417 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, |
418 | struct nlattr **tb, struct nlattr *rate_tlv, | 418 | struct nlattr **tb, struct nlattr *rate_tlv, |
419 | struct tcf_exts *exts, bool ovr, | 419 | struct tcf_exts *exts, bool ovr, bool rtnl_held, |
420 | struct netlink_ext_ack *extack); | 420 | struct netlink_ext_ack *extack); |
421 | void tcf_exts_destroy(struct tcf_exts *exts); | 421 | void tcf_exts_destroy(struct tcf_exts *exts); |
422 | void tcf_exts_change(struct tcf_exts *dst, struct tcf_exts *src); | 422 | void tcf_exts_change(struct tcf_exts *dst, struct tcf_exts *src); |
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 3038a82f6591..a3e715d34efb 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
@@ -2841,7 +2841,7 @@ EXPORT_SYMBOL(tcf_exts_destroy); | |||
2841 | 2841 | ||
2842 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, | 2842 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, |
2843 | struct nlattr *rate_tlv, struct tcf_exts *exts, bool ovr, | 2843 | struct nlattr *rate_tlv, struct tcf_exts *exts, bool ovr, |
2844 | struct netlink_ext_ack *extack) | 2844 | bool rtnl_held, struct netlink_ext_ack *extack) |
2845 | { | 2845 | { |
2846 | #ifdef CONFIG_NET_CLS_ACT | 2846 | #ifdef CONFIG_NET_CLS_ACT |
2847 | { | 2847 | { |
@@ -2851,7 +2851,8 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, | |||
2851 | if (exts->police && tb[exts->police]) { | 2851 | if (exts->police && tb[exts->police]) { |
2852 | act = tcf_action_init_1(net, tp, tb[exts->police], | 2852 | act = tcf_action_init_1(net, tp, tb[exts->police], |
2853 | rate_tlv, "police", ovr, | 2853 | rate_tlv, "police", ovr, |
2854 | TCA_ACT_BIND, true, extack); | 2854 | TCA_ACT_BIND, rtnl_held, |
2855 | extack); | ||
2855 | if (IS_ERR(act)) | 2856 | if (IS_ERR(act)) |
2856 | return PTR_ERR(act); | 2857 | return PTR_ERR(act); |
2857 | 2858 | ||
@@ -2863,8 +2864,8 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, | |||
2863 | 2864 | ||
2864 | err = tcf_action_init(net, tp, tb[exts->action], | 2865 | err = tcf_action_init(net, tp, tb[exts->action], |
2865 | rate_tlv, NULL, ovr, TCA_ACT_BIND, | 2866 | rate_tlv, NULL, ovr, TCA_ACT_BIND, |
2866 | exts->actions, &attr_size, true, | 2867 | exts->actions, &attr_size, |
2867 | extack); | 2868 | rtnl_held, extack); |
2868 | if (err < 0) | 2869 | if (err < 0) |
2869 | return err; | 2870 | return err; |
2870 | exts->nr_actions = err; | 2871 | exts->nr_actions = err; |
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 4a57fec6f306..eaf9c02fe792 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c | |||
@@ -153,7 +153,7 @@ static int basic_set_parms(struct net *net, struct tcf_proto *tp, | |||
153 | { | 153 | { |
154 | int err; | 154 | int err; |
155 | 155 | ||
156 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); | 156 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, true, extack); |
157 | if (err < 0) | 157 | if (err < 0) |
158 | return err; | 158 | return err; |
159 | 159 | ||
diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index a95cb240a606..656b3423ad35 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c | |||
@@ -417,7 +417,8 @@ static int cls_bpf_set_parms(struct net *net, struct tcf_proto *tp, | |||
417 | if ((!is_bpf && !is_ebpf) || (is_bpf && is_ebpf)) | 417 | if ((!is_bpf && !is_ebpf) || (is_bpf && is_ebpf)) |
418 | return -EINVAL; | 418 | return -EINVAL; |
419 | 419 | ||
420 | ret = tcf_exts_validate(net, tp, tb, est, &prog->exts, ovr, extack); | 420 | ret = tcf_exts_validate(net, tp, tb, est, &prog->exts, ovr, true, |
421 | extack); | ||
421 | if (ret < 0) | 422 | if (ret < 0) |
422 | return ret; | 423 | return ret; |
423 | 424 | ||
diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c index 3bc01bdde165..663ee1c6d606 100644 --- a/net/sched/cls_cgroup.c +++ b/net/sched/cls_cgroup.c | |||
@@ -110,7 +110,7 @@ static int cls_cgroup_change(struct net *net, struct sk_buff *in_skb, | |||
110 | goto errout; | 110 | goto errout; |
111 | 111 | ||
112 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &new->exts, ovr, | 112 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &new->exts, ovr, |
113 | extack); | 113 | true, extack); |
114 | if (err < 0) | 114 | if (err < 0) |
115 | goto errout; | 115 | goto errout; |
116 | 116 | ||
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c index 2bb043cd436b..39a6407d4832 100644 --- a/net/sched/cls_flow.c +++ b/net/sched/cls_flow.c | |||
@@ -445,7 +445,7 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, | |||
445 | goto err2; | 445 | goto err2; |
446 | 446 | ||
447 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &fnew->exts, ovr, | 447 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &fnew->exts, ovr, |
448 | extack); | 448 | true, extack); |
449 | if (err < 0) | 449 | if (err < 0) |
450 | goto err2; | 450 | goto err2; |
451 | 451 | ||
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 6a341287a527..5e3f74ab68ca 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c | |||
@@ -1272,7 +1272,8 @@ static int fl_set_parms(struct net *net, struct tcf_proto *tp, | |||
1272 | { | 1272 | { |
1273 | int err; | 1273 | int err; |
1274 | 1274 | ||
1275 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); | 1275 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, true, |
1276 | extack); | ||
1276 | if (err < 0) | 1277 | if (err < 0) |
1277 | return err; | 1278 | return err; |
1278 | 1279 | ||
diff --git a/net/sched/cls_fw.c b/net/sched/cls_fw.c index 29eeeaf3ea44..c8173ebb69f2 100644 --- a/net/sched/cls_fw.c +++ b/net/sched/cls_fw.c | |||
@@ -217,7 +217,7 @@ static int fw_set_parms(struct net *net, struct tcf_proto *tp, | |||
217 | int err; | 217 | int err; |
218 | 218 | ||
219 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &f->exts, ovr, | 219 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &f->exts, ovr, |
220 | extack); | 220 | true, extack); |
221 | if (err < 0) | 221 | if (err < 0) |
222 | return err; | 222 | return err; |
223 | 223 | ||
diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index a1b803fd372e..8848a147c4bf 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c | |||
@@ -145,7 +145,8 @@ static int mall_set_parms(struct net *net, struct tcf_proto *tp, | |||
145 | { | 145 | { |
146 | int err; | 146 | int err; |
147 | 147 | ||
148 | err = tcf_exts_validate(net, tp, tb, est, &head->exts, ovr, extack); | 148 | err = tcf_exts_validate(net, tp, tb, est, &head->exts, ovr, true, |
149 | extack); | ||
149 | if (err < 0) | 150 | if (err < 0) |
150 | return err; | 151 | return err; |
151 | 152 | ||
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c index 0404aa5fa7cb..44b26038c4c4 100644 --- a/net/sched/cls_route.c +++ b/net/sched/cls_route.c | |||
@@ -393,7 +393,7 @@ static int route4_set_parms(struct net *net, struct tcf_proto *tp, | |||
393 | struct route4_bucket *b; | 393 | struct route4_bucket *b; |
394 | int err; | 394 | int err; |
395 | 395 | ||
396 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); | 396 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, true, extack); |
397 | if (err < 0) | 397 | if (err < 0) |
398 | return err; | 398 | return err; |
399 | 399 | ||
diff --git a/net/sched/cls_rsvp.h b/net/sched/cls_rsvp.h index e9ccf7daea7d..9dd9530e6a52 100644 --- a/net/sched/cls_rsvp.h +++ b/net/sched/cls_rsvp.h | |||
@@ -502,7 +502,8 @@ static int rsvp_change(struct net *net, struct sk_buff *in_skb, | |||
502 | err = tcf_exts_init(&e, TCA_RSVP_ACT, TCA_RSVP_POLICE); | 502 | err = tcf_exts_init(&e, TCA_RSVP_ACT, TCA_RSVP_POLICE); |
503 | if (err < 0) | 503 | if (err < 0) |
504 | return err; | 504 | return err; |
505 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, ovr, extack); | 505 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, ovr, true, |
506 | extack); | ||
506 | if (err < 0) | 507 | if (err < 0) |
507 | goto errout2; | 508 | goto errout2; |
508 | 509 | ||
diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c index 9ccc93f257db..b7dc667b6ec0 100644 --- a/net/sched/cls_tcindex.c +++ b/net/sched/cls_tcindex.c | |||
@@ -314,7 +314,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, | |||
314 | err = tcf_exts_init(&e, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE); | 314 | err = tcf_exts_init(&e, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE); |
315 | if (err < 0) | 315 | if (err < 0) |
316 | return err; | 316 | return err; |
317 | err = tcf_exts_validate(net, tp, tb, est, &e, ovr, extack); | 317 | err = tcf_exts_validate(net, tp, tb, est, &e, ovr, true, extack); |
318 | if (err < 0) | 318 | if (err < 0) |
319 | goto errout; | 319 | goto errout; |
320 | 320 | ||
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index dcea21004604..e891f30d42e9 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c | |||
@@ -726,7 +726,7 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp, | |||
726 | { | 726 | { |
727 | int err; | 727 | int err; |
728 | 728 | ||
729 | err = tcf_exts_validate(net, tp, tb, est, &n->exts, ovr, extack); | 729 | err = tcf_exts_validate(net, tp, tb, est, &n->exts, ovr, true, extack); |
730 | if (err < 0) | 730 | if (err < 0) |
731 | return err; | 731 | return err; |
732 | 732 | ||