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 | ||
