diff options
-rw-r--r-- | include/net/act_api.h | 2 | ||||
-rw-r--r-- | net/sched/act_api.c | 15 | ||||
-rw-r--r-- | net/sched/act_bpf.c | 8 | ||||
-rw-r--r-- | net/sched/act_connmark.c | 8 | ||||
-rw-r--r-- | net/sched/act_csum.c | 8 | ||||
-rw-r--r-- | net/sched/act_gact.c | 8 | ||||
-rw-r--r-- | net/sched/act_ife.c | 8 | ||||
-rw-r--r-- | net/sched/act_ipt.c | 16 | ||||
-rw-r--r-- | net/sched/act_mirred.c | 8 | ||||
-rw-r--r-- | net/sched/act_nat.c | 8 | ||||
-rw-r--r-- | net/sched/act_pedit.c | 8 | ||||
-rw-r--r-- | net/sched/act_police.c | 8 | ||||
-rw-r--r-- | net/sched/act_sample.c | 8 | ||||
-rw-r--r-- | net/sched/act_simple.c | 8 | ||||
-rw-r--r-- | net/sched/act_skbedit.c | 8 | ||||
-rw-r--r-- | net/sched/act_skbmod.c | 8 | ||||
-rw-r--r-- | net/sched/act_tunnel_key.c | 8 | ||||
-rw-r--r-- | net/sched/act_vlan.c | 8 |
18 files changed, 7 insertions, 146 deletions
diff --git a/include/net/act_api.h b/include/net/act_api.h index 1ad5b19e83a9..e32708491d83 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h | |||
@@ -102,7 +102,6 @@ struct tc_action_ops { | |||
102 | size_t (*get_fill_size)(const struct tc_action *act); | 102 | size_t (*get_fill_size)(const struct tc_action *act); |
103 | struct net_device *(*get_dev)(const struct tc_action *a); | 103 | struct net_device *(*get_dev)(const struct tc_action *a); |
104 | void (*put_dev)(struct net_device *dev); | 104 | void (*put_dev)(struct net_device *dev); |
105 | int (*delete)(struct net *net, u32 index); | ||
106 | }; | 105 | }; |
107 | 106 | ||
108 | struct tc_action_net { | 107 | struct tc_action_net { |
@@ -158,7 +157,6 @@ void tcf_idr_insert(struct tc_action_net *tn, struct tc_action *a); | |||
158 | void tcf_idr_cleanup(struct tc_action_net *tn, u32 index); | 157 | void tcf_idr_cleanup(struct tc_action_net *tn, u32 index); |
159 | int tcf_idr_check_alloc(struct tc_action_net *tn, u32 *index, | 158 | int tcf_idr_check_alloc(struct tc_action_net *tn, u32 *index, |
160 | struct tc_action **a, int bind); | 159 | struct tc_action **a, int bind); |
161 | int tcf_idr_delete_index(struct tc_action_net *tn, u32 index); | ||
162 | int __tcf_idr_release(struct tc_action *a, bool bind, bool strict); | 160 | int __tcf_idr_release(struct tc_action *a, bool bind, bool strict); |
163 | 161 | ||
164 | static inline int tcf_idr_release(struct tc_action *a, bool bind) | 162 | static inline int tcf_idr_release(struct tc_action *a, bool bind) |
diff --git a/net/sched/act_api.c b/net/sched/act_api.c index cd69a6afcf88..00bf7d2b0bdd 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c | |||
@@ -337,9 +337,8 @@ bool tcf_idr_check(struct tc_action_net *tn, u32 index, struct tc_action **a, | |||
337 | } | 337 | } |
338 | EXPORT_SYMBOL(tcf_idr_check); | 338 | EXPORT_SYMBOL(tcf_idr_check); |
339 | 339 | ||
340 | int tcf_idr_delete_index(struct tc_action_net *tn, u32 index) | 340 | static int tcf_idr_delete_index(struct tcf_idrinfo *idrinfo, u32 index) |
341 | { | 341 | { |
342 | struct tcf_idrinfo *idrinfo = tn->idrinfo; | ||
343 | struct tc_action *p; | 342 | struct tc_action *p; |
344 | int ret = 0; | 343 | int ret = 0; |
345 | 344 | ||
@@ -370,7 +369,6 @@ int tcf_idr_delete_index(struct tc_action_net *tn, u32 index) | |||
370 | spin_unlock(&idrinfo->lock); | 369 | spin_unlock(&idrinfo->lock); |
371 | return ret; | 370 | return ret; |
372 | } | 371 | } |
373 | EXPORT_SYMBOL(tcf_idr_delete_index); | ||
374 | 372 | ||
375 | int tcf_idr_create(struct tc_action_net *tn, u32 index, struct nlattr *est, | 373 | int tcf_idr_create(struct tc_action_net *tn, u32 index, struct nlattr *est, |
376 | struct tc_action **a, const struct tc_action_ops *ops, | 374 | struct tc_action **a, const struct tc_action_ops *ops, |
@@ -1182,24 +1180,25 @@ err_out: | |||
1182 | static int tcf_action_delete(struct net *net, struct tc_action *actions[], | 1180 | static int tcf_action_delete(struct net *net, struct tc_action *actions[], |
1183 | struct netlink_ext_ack *extack) | 1181 | struct netlink_ext_ack *extack) |
1184 | { | 1182 | { |
1185 | u32 act_index; | 1183 | int i; |
1186 | int ret, i; | ||
1187 | 1184 | ||
1188 | for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) { | 1185 | for (i = 0; i < TCA_ACT_MAX_PRIO && actions[i]; i++) { |
1189 | struct tc_action *a = actions[i]; | 1186 | struct tc_action *a = actions[i]; |
1190 | const struct tc_action_ops *ops = a->ops; | 1187 | const struct tc_action_ops *ops = a->ops; |
1191 | |||
1192 | /* Actions can be deleted concurrently so we must save their | 1188 | /* Actions can be deleted concurrently so we must save their |
1193 | * type and id to search again after reference is released. | 1189 | * type and id to search again after reference is released. |
1194 | */ | 1190 | */ |
1195 | act_index = a->tcfa_index; | 1191 | struct tcf_idrinfo *idrinfo = a->idrinfo; |
1192 | u32 act_index = a->tcfa_index; | ||
1196 | 1193 | ||
1197 | if (tcf_action_put(a)) { | 1194 | if (tcf_action_put(a)) { |
1198 | /* last reference, action was deleted concurrently */ | 1195 | /* last reference, action was deleted concurrently */ |
1199 | module_put(ops->owner); | 1196 | module_put(ops->owner); |
1200 | } else { | 1197 | } else { |
1198 | int ret; | ||
1199 | |||
1201 | /* now do the delete */ | 1200 | /* now do the delete */ |
1202 | ret = ops->delete(net, act_index); | 1201 | ret = tcf_idr_delete_index(idrinfo, act_index); |
1203 | if (ret < 0) | 1202 | if (ret < 0) |
1204 | return ret; | 1203 | return ret; |
1205 | } | 1204 | } |
diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c index d30b23e42436..0c68bc9cf0b4 100644 --- a/net/sched/act_bpf.c +++ b/net/sched/act_bpf.c | |||
@@ -395,13 +395,6 @@ static int tcf_bpf_search(struct net *net, struct tc_action **a, u32 index, | |||
395 | return tcf_idr_search(tn, a, index); | 395 | return tcf_idr_search(tn, a, index); |
396 | } | 396 | } |
397 | 397 | ||
398 | static int tcf_bpf_delete(struct net *net, u32 index) | ||
399 | { | ||
400 | struct tc_action_net *tn = net_generic(net, bpf_net_id); | ||
401 | |||
402 | return tcf_idr_delete_index(tn, index); | ||
403 | } | ||
404 | |||
405 | static struct tc_action_ops act_bpf_ops __read_mostly = { | 398 | static struct tc_action_ops act_bpf_ops __read_mostly = { |
406 | .kind = "bpf", | 399 | .kind = "bpf", |
407 | .type = TCA_ACT_BPF, | 400 | .type = TCA_ACT_BPF, |
@@ -412,7 +405,6 @@ static struct tc_action_ops act_bpf_ops __read_mostly = { | |||
412 | .init = tcf_bpf_init, | 405 | .init = tcf_bpf_init, |
413 | .walk = tcf_bpf_walker, | 406 | .walk = tcf_bpf_walker, |
414 | .lookup = tcf_bpf_search, | 407 | .lookup = tcf_bpf_search, |
415 | .delete = tcf_bpf_delete, | ||
416 | .size = sizeof(struct tcf_bpf), | 408 | .size = sizeof(struct tcf_bpf), |
417 | }; | 409 | }; |
418 | 410 | ||
diff --git a/net/sched/act_connmark.c b/net/sched/act_connmark.c index 54c0bf54f2ac..6f0f273f1139 100644 --- a/net/sched/act_connmark.c +++ b/net/sched/act_connmark.c | |||
@@ -198,13 +198,6 @@ static int tcf_connmark_search(struct net *net, struct tc_action **a, u32 index, | |||
198 | return tcf_idr_search(tn, a, index); | 198 | return tcf_idr_search(tn, a, index); |
199 | } | 199 | } |
200 | 200 | ||
201 | static int tcf_connmark_delete(struct net *net, u32 index) | ||
202 | { | ||
203 | struct tc_action_net *tn = net_generic(net, connmark_net_id); | ||
204 | |||
205 | return tcf_idr_delete_index(tn, index); | ||
206 | } | ||
207 | |||
208 | static struct tc_action_ops act_connmark_ops = { | 201 | static struct tc_action_ops act_connmark_ops = { |
209 | .kind = "connmark", | 202 | .kind = "connmark", |
210 | .type = TCA_ACT_CONNMARK, | 203 | .type = TCA_ACT_CONNMARK, |
@@ -214,7 +207,6 @@ static struct tc_action_ops act_connmark_ops = { | |||
214 | .init = tcf_connmark_init, | 207 | .init = tcf_connmark_init, |
215 | .walk = tcf_connmark_walker, | 208 | .walk = tcf_connmark_walker, |
216 | .lookup = tcf_connmark_search, | 209 | .lookup = tcf_connmark_search, |
217 | .delete = tcf_connmark_delete, | ||
218 | .size = sizeof(struct tcf_connmark_info), | 210 | .size = sizeof(struct tcf_connmark_info), |
219 | }; | 211 | }; |
220 | 212 | ||
diff --git a/net/sched/act_csum.c b/net/sched/act_csum.c index e698d3fe2080..b8a67ae3105a 100644 --- a/net/sched/act_csum.c +++ b/net/sched/act_csum.c | |||
@@ -659,13 +659,6 @@ static size_t tcf_csum_get_fill_size(const struct tc_action *act) | |||
659 | return nla_total_size(sizeof(struct tc_csum)); | 659 | return nla_total_size(sizeof(struct tc_csum)); |
660 | } | 660 | } |
661 | 661 | ||
662 | static int tcf_csum_delete(struct net *net, u32 index) | ||
663 | { | ||
664 | struct tc_action_net *tn = net_generic(net, csum_net_id); | ||
665 | |||
666 | return tcf_idr_delete_index(tn, index); | ||
667 | } | ||
668 | |||
669 | static struct tc_action_ops act_csum_ops = { | 662 | static struct tc_action_ops act_csum_ops = { |
670 | .kind = "csum", | 663 | .kind = "csum", |
671 | .type = TCA_ACT_CSUM, | 664 | .type = TCA_ACT_CSUM, |
@@ -677,7 +670,6 @@ static struct tc_action_ops act_csum_ops = { | |||
677 | .walk = tcf_csum_walker, | 670 | .walk = tcf_csum_walker, |
678 | .lookup = tcf_csum_search, | 671 | .lookup = tcf_csum_search, |
679 | .get_fill_size = tcf_csum_get_fill_size, | 672 | .get_fill_size = tcf_csum_get_fill_size, |
680 | .delete = tcf_csum_delete, | ||
681 | .size = sizeof(struct tcf_csum), | 673 | .size = sizeof(struct tcf_csum), |
682 | }; | 674 | }; |
683 | 675 | ||
diff --git a/net/sched/act_gact.c b/net/sched/act_gact.c index 6a3f25a8ffb3..cd1d9bd32ef9 100644 --- a/net/sched/act_gact.c +++ b/net/sched/act_gact.c | |||
@@ -243,13 +243,6 @@ static size_t tcf_gact_get_fill_size(const struct tc_action *act) | |||
243 | return sz; | 243 | return sz; |
244 | } | 244 | } |
245 | 245 | ||
246 | static int tcf_gact_delete(struct net *net, u32 index) | ||
247 | { | ||
248 | struct tc_action_net *tn = net_generic(net, gact_net_id); | ||
249 | |||
250 | return tcf_idr_delete_index(tn, index); | ||
251 | } | ||
252 | |||
253 | static struct tc_action_ops act_gact_ops = { | 246 | static struct tc_action_ops act_gact_ops = { |
254 | .kind = "gact", | 247 | .kind = "gact", |
255 | .type = TCA_ACT_GACT, | 248 | .type = TCA_ACT_GACT, |
@@ -261,7 +254,6 @@ static struct tc_action_ops act_gact_ops = { | |||
261 | .walk = tcf_gact_walker, | 254 | .walk = tcf_gact_walker, |
262 | .lookup = tcf_gact_search, | 255 | .lookup = tcf_gact_search, |
263 | .get_fill_size = tcf_gact_get_fill_size, | 256 | .get_fill_size = tcf_gact_get_fill_size, |
264 | .delete = tcf_gact_delete, | ||
265 | .size = sizeof(struct tcf_gact), | 257 | .size = sizeof(struct tcf_gact), |
266 | }; | 258 | }; |
267 | 259 | ||
diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c index d1081bdf1bdb..92fcf8ba5bca 100644 --- a/net/sched/act_ife.c +++ b/net/sched/act_ife.c | |||
@@ -853,13 +853,6 @@ static int tcf_ife_search(struct net *net, struct tc_action **a, u32 index, | |||
853 | return tcf_idr_search(tn, a, index); | 853 | return tcf_idr_search(tn, a, index); |
854 | } | 854 | } |
855 | 855 | ||
856 | static int tcf_ife_delete(struct net *net, u32 index) | ||
857 | { | ||
858 | struct tc_action_net *tn = net_generic(net, ife_net_id); | ||
859 | |||
860 | return tcf_idr_delete_index(tn, index); | ||
861 | } | ||
862 | |||
863 | static struct tc_action_ops act_ife_ops = { | 856 | static struct tc_action_ops act_ife_ops = { |
864 | .kind = "ife", | 857 | .kind = "ife", |
865 | .type = TCA_ACT_IFE, | 858 | .type = TCA_ACT_IFE, |
@@ -870,7 +863,6 @@ static struct tc_action_ops act_ife_ops = { | |||
870 | .init = tcf_ife_init, | 863 | .init = tcf_ife_init, |
871 | .walk = tcf_ife_walker, | 864 | .walk = tcf_ife_walker, |
872 | .lookup = tcf_ife_search, | 865 | .lookup = tcf_ife_search, |
873 | .delete = tcf_ife_delete, | ||
874 | .size = sizeof(struct tcf_ife_info), | 866 | .size = sizeof(struct tcf_ife_info), |
875 | }; | 867 | }; |
876 | 868 | ||
diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c index 51f235bbeb5b..23273b5303fd 100644 --- a/net/sched/act_ipt.c +++ b/net/sched/act_ipt.c | |||
@@ -337,13 +337,6 @@ static int tcf_ipt_search(struct net *net, struct tc_action **a, u32 index, | |||
337 | return tcf_idr_search(tn, a, index); | 337 | return tcf_idr_search(tn, a, index); |
338 | } | 338 | } |
339 | 339 | ||
340 | static int tcf_ipt_delete(struct net *net, u32 index) | ||
341 | { | ||
342 | struct tc_action_net *tn = net_generic(net, ipt_net_id); | ||
343 | |||
344 | return tcf_idr_delete_index(tn, index); | ||
345 | } | ||
346 | |||
347 | static struct tc_action_ops act_ipt_ops = { | 340 | static struct tc_action_ops act_ipt_ops = { |
348 | .kind = "ipt", | 341 | .kind = "ipt", |
349 | .type = TCA_ACT_IPT, | 342 | .type = TCA_ACT_IPT, |
@@ -354,7 +347,6 @@ static struct tc_action_ops act_ipt_ops = { | |||
354 | .init = tcf_ipt_init, | 347 | .init = tcf_ipt_init, |
355 | .walk = tcf_ipt_walker, | 348 | .walk = tcf_ipt_walker, |
356 | .lookup = tcf_ipt_search, | 349 | .lookup = tcf_ipt_search, |
357 | .delete = tcf_ipt_delete, | ||
358 | .size = sizeof(struct tcf_ipt), | 350 | .size = sizeof(struct tcf_ipt), |
359 | }; | 351 | }; |
360 | 352 | ||
@@ -395,13 +387,6 @@ static int tcf_xt_search(struct net *net, struct tc_action **a, u32 index, | |||
395 | return tcf_idr_search(tn, a, index); | 387 | return tcf_idr_search(tn, a, index); |
396 | } | 388 | } |
397 | 389 | ||
398 | static int tcf_xt_delete(struct net *net, u32 index) | ||
399 | { | ||
400 | struct tc_action_net *tn = net_generic(net, xt_net_id); | ||
401 | |||
402 | return tcf_idr_delete_index(tn, index); | ||
403 | } | ||
404 | |||
405 | static struct tc_action_ops act_xt_ops = { | 390 | static struct tc_action_ops act_xt_ops = { |
406 | .kind = "xt", | 391 | .kind = "xt", |
407 | .type = TCA_ACT_XT, | 392 | .type = TCA_ACT_XT, |
@@ -412,7 +397,6 @@ static struct tc_action_ops act_xt_ops = { | |||
412 | .init = tcf_xt_init, | 397 | .init = tcf_xt_init, |
413 | .walk = tcf_xt_walker, | 398 | .walk = tcf_xt_walker, |
414 | .lookup = tcf_xt_search, | 399 | .lookup = tcf_xt_search, |
415 | .delete = tcf_xt_delete, | ||
416 | .size = sizeof(struct tcf_ipt), | 400 | .size = sizeof(struct tcf_ipt), |
417 | }; | 401 | }; |
418 | 402 | ||
diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 38fd20f10f67..8bf66d0a6800 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c | |||
@@ -395,13 +395,6 @@ static void tcf_mirred_put_dev(struct net_device *dev) | |||
395 | dev_put(dev); | 395 | dev_put(dev); |
396 | } | 396 | } |
397 | 397 | ||
398 | static int tcf_mirred_delete(struct net *net, u32 index) | ||
399 | { | ||
400 | struct tc_action_net *tn = net_generic(net, mirred_net_id); | ||
401 | |||
402 | return tcf_idr_delete_index(tn, index); | ||
403 | } | ||
404 | |||
405 | static struct tc_action_ops act_mirred_ops = { | 398 | static struct tc_action_ops act_mirred_ops = { |
406 | .kind = "mirred", | 399 | .kind = "mirred", |
407 | .type = TCA_ACT_MIRRED, | 400 | .type = TCA_ACT_MIRRED, |
@@ -416,7 +409,6 @@ static struct tc_action_ops act_mirred_ops = { | |||
416 | .size = sizeof(struct tcf_mirred), | 409 | .size = sizeof(struct tcf_mirred), |
417 | .get_dev = tcf_mirred_get_dev, | 410 | .get_dev = tcf_mirred_get_dev, |
418 | .put_dev = tcf_mirred_put_dev, | 411 | .put_dev = tcf_mirred_put_dev, |
419 | .delete = tcf_mirred_delete, | ||
420 | }; | 412 | }; |
421 | 413 | ||
422 | static __net_init int mirred_init_net(struct net *net) | 414 | static __net_init int mirred_init_net(struct net *net) |
diff --git a/net/sched/act_nat.c b/net/sched/act_nat.c index 822e903bfc25..4313aa102440 100644 --- a/net/sched/act_nat.c +++ b/net/sched/act_nat.c | |||
@@ -300,13 +300,6 @@ static int tcf_nat_search(struct net *net, struct tc_action **a, u32 index, | |||
300 | return tcf_idr_search(tn, a, index); | 300 | return tcf_idr_search(tn, a, index); |
301 | } | 301 | } |
302 | 302 | ||
303 | static int tcf_nat_delete(struct net *net, u32 index) | ||
304 | { | ||
305 | struct tc_action_net *tn = net_generic(net, nat_net_id); | ||
306 | |||
307 | return tcf_idr_delete_index(tn, index); | ||
308 | } | ||
309 | |||
310 | static struct tc_action_ops act_nat_ops = { | 303 | static struct tc_action_ops act_nat_ops = { |
311 | .kind = "nat", | 304 | .kind = "nat", |
312 | .type = TCA_ACT_NAT, | 305 | .type = TCA_ACT_NAT, |
@@ -316,7 +309,6 @@ static struct tc_action_ops act_nat_ops = { | |||
316 | .init = tcf_nat_init, | 309 | .init = tcf_nat_init, |
317 | .walk = tcf_nat_walker, | 310 | .walk = tcf_nat_walker, |
318 | .lookup = tcf_nat_search, | 311 | .lookup = tcf_nat_search, |
319 | .delete = tcf_nat_delete, | ||
320 | .size = sizeof(struct tcf_nat), | 312 | .size = sizeof(struct tcf_nat), |
321 | }; | 313 | }; |
322 | 314 | ||
diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index 8a7a7cb94e83..107034070019 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c | |||
@@ -460,13 +460,6 @@ static int tcf_pedit_search(struct net *net, struct tc_action **a, u32 index, | |||
460 | return tcf_idr_search(tn, a, index); | 460 | return tcf_idr_search(tn, a, index); |
461 | } | 461 | } |
462 | 462 | ||
463 | static int tcf_pedit_delete(struct net *net, u32 index) | ||
464 | { | ||
465 | struct tc_action_net *tn = net_generic(net, pedit_net_id); | ||
466 | |||
467 | return tcf_idr_delete_index(tn, index); | ||
468 | } | ||
469 | |||
470 | static struct tc_action_ops act_pedit_ops = { | 463 | static struct tc_action_ops act_pedit_ops = { |
471 | .kind = "pedit", | 464 | .kind = "pedit", |
472 | .type = TCA_ACT_PEDIT, | 465 | .type = TCA_ACT_PEDIT, |
@@ -477,7 +470,6 @@ static struct tc_action_ops act_pedit_ops = { | |||
477 | .init = tcf_pedit_init, | 470 | .init = tcf_pedit_init, |
478 | .walk = tcf_pedit_walker, | 471 | .walk = tcf_pedit_walker, |
479 | .lookup = tcf_pedit_search, | 472 | .lookup = tcf_pedit_search, |
480 | .delete = tcf_pedit_delete, | ||
481 | .size = sizeof(struct tcf_pedit), | 473 | .size = sizeof(struct tcf_pedit), |
482 | }; | 474 | }; |
483 | 475 | ||
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index 06f0742db593..5d8bfa878477 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
@@ -320,13 +320,6 @@ static int tcf_police_search(struct net *net, struct tc_action **a, u32 index, | |||
320 | return tcf_idr_search(tn, a, index); | 320 | return tcf_idr_search(tn, a, index); |
321 | } | 321 | } |
322 | 322 | ||
323 | static int tcf_police_delete(struct net *net, u32 index) | ||
324 | { | ||
325 | struct tc_action_net *tn = net_generic(net, police_net_id); | ||
326 | |||
327 | return tcf_idr_delete_index(tn, index); | ||
328 | } | ||
329 | |||
330 | MODULE_AUTHOR("Alexey Kuznetsov"); | 323 | MODULE_AUTHOR("Alexey Kuznetsov"); |
331 | MODULE_DESCRIPTION("Policing actions"); | 324 | MODULE_DESCRIPTION("Policing actions"); |
332 | MODULE_LICENSE("GPL"); | 325 | MODULE_LICENSE("GPL"); |
@@ -340,7 +333,6 @@ static struct tc_action_ops act_police_ops = { | |||
340 | .init = tcf_police_init, | 333 | .init = tcf_police_init, |
341 | .walk = tcf_police_walker, | 334 | .walk = tcf_police_walker, |
342 | .lookup = tcf_police_search, | 335 | .lookup = tcf_police_search, |
343 | .delete = tcf_police_delete, | ||
344 | .size = sizeof(struct tcf_police), | 336 | .size = sizeof(struct tcf_police), |
345 | }; | 337 | }; |
346 | 338 | ||
diff --git a/net/sched/act_sample.c b/net/sched/act_sample.c index 207b4132d1b0..44e9c00657bc 100644 --- a/net/sched/act_sample.c +++ b/net/sched/act_sample.c | |||
@@ -232,13 +232,6 @@ static int tcf_sample_search(struct net *net, struct tc_action **a, u32 index, | |||
232 | return tcf_idr_search(tn, a, index); | 232 | return tcf_idr_search(tn, a, index); |
233 | } | 233 | } |
234 | 234 | ||
235 | static int tcf_sample_delete(struct net *net, u32 index) | ||
236 | { | ||
237 | struct tc_action_net *tn = net_generic(net, sample_net_id); | ||
238 | |||
239 | return tcf_idr_delete_index(tn, index); | ||
240 | } | ||
241 | |||
242 | static struct tc_action_ops act_sample_ops = { | 235 | static struct tc_action_ops act_sample_ops = { |
243 | .kind = "sample", | 236 | .kind = "sample", |
244 | .type = TCA_ACT_SAMPLE, | 237 | .type = TCA_ACT_SAMPLE, |
@@ -249,7 +242,6 @@ static struct tc_action_ops act_sample_ops = { | |||
249 | .cleanup = tcf_sample_cleanup, | 242 | .cleanup = tcf_sample_cleanup, |
250 | .walk = tcf_sample_walker, | 243 | .walk = tcf_sample_walker, |
251 | .lookup = tcf_sample_search, | 244 | .lookup = tcf_sample_search, |
252 | .delete = tcf_sample_delete, | ||
253 | .size = sizeof(struct tcf_sample), | 245 | .size = sizeof(struct tcf_sample), |
254 | }; | 246 | }; |
255 | 247 | ||
diff --git a/net/sched/act_simple.c b/net/sched/act_simple.c index e616523ba3c1..52400d49f81f 100644 --- a/net/sched/act_simple.c +++ b/net/sched/act_simple.c | |||
@@ -196,13 +196,6 @@ static int tcf_simp_search(struct net *net, struct tc_action **a, u32 index, | |||
196 | return tcf_idr_search(tn, a, index); | 196 | return tcf_idr_search(tn, a, index); |
197 | } | 197 | } |
198 | 198 | ||
199 | static int tcf_simp_delete(struct net *net, u32 index) | ||
200 | { | ||
201 | struct tc_action_net *tn = net_generic(net, simp_net_id); | ||
202 | |||
203 | return tcf_idr_delete_index(tn, index); | ||
204 | } | ||
205 | |||
206 | static struct tc_action_ops act_simp_ops = { | 199 | static struct tc_action_ops act_simp_ops = { |
207 | .kind = "simple", | 200 | .kind = "simple", |
208 | .type = TCA_ACT_SIMP, | 201 | .type = TCA_ACT_SIMP, |
@@ -213,7 +206,6 @@ static struct tc_action_ops act_simp_ops = { | |||
213 | .init = tcf_simp_init, | 206 | .init = tcf_simp_init, |
214 | .walk = tcf_simp_walker, | 207 | .walk = tcf_simp_walker, |
215 | .lookup = tcf_simp_search, | 208 | .lookup = tcf_simp_search, |
216 | .delete = tcf_simp_delete, | ||
217 | .size = sizeof(struct tcf_defact), | 209 | .size = sizeof(struct tcf_defact), |
218 | }; | 210 | }; |
219 | 211 | ||
diff --git a/net/sched/act_skbedit.c b/net/sched/act_skbedit.c index 926d7bc4a89d..73e44ce2a883 100644 --- a/net/sched/act_skbedit.c +++ b/net/sched/act_skbedit.c | |||
@@ -299,13 +299,6 @@ static int tcf_skbedit_search(struct net *net, struct tc_action **a, u32 index, | |||
299 | return tcf_idr_search(tn, a, index); | 299 | return tcf_idr_search(tn, a, index); |
300 | } | 300 | } |
301 | 301 | ||
302 | static int tcf_skbedit_delete(struct net *net, u32 index) | ||
303 | { | ||
304 | struct tc_action_net *tn = net_generic(net, skbedit_net_id); | ||
305 | |||
306 | return tcf_idr_delete_index(tn, index); | ||
307 | } | ||
308 | |||
309 | static struct tc_action_ops act_skbedit_ops = { | 302 | static struct tc_action_ops act_skbedit_ops = { |
310 | .kind = "skbedit", | 303 | .kind = "skbedit", |
311 | .type = TCA_ACT_SKBEDIT, | 304 | .type = TCA_ACT_SKBEDIT, |
@@ -316,7 +309,6 @@ static struct tc_action_ops act_skbedit_ops = { | |||
316 | .cleanup = tcf_skbedit_cleanup, | 309 | .cleanup = tcf_skbedit_cleanup, |
317 | .walk = tcf_skbedit_walker, | 310 | .walk = tcf_skbedit_walker, |
318 | .lookup = tcf_skbedit_search, | 311 | .lookup = tcf_skbedit_search, |
319 | .delete = tcf_skbedit_delete, | ||
320 | .size = sizeof(struct tcf_skbedit), | 312 | .size = sizeof(struct tcf_skbedit), |
321 | }; | 313 | }; |
322 | 314 | ||
diff --git a/net/sched/act_skbmod.c b/net/sched/act_skbmod.c index d6a1af0c4171..588077fafd6c 100644 --- a/net/sched/act_skbmod.c +++ b/net/sched/act_skbmod.c | |||
@@ -259,13 +259,6 @@ static int tcf_skbmod_search(struct net *net, struct tc_action **a, u32 index, | |||
259 | return tcf_idr_search(tn, a, index); | 259 | return tcf_idr_search(tn, a, index); |
260 | } | 260 | } |
261 | 261 | ||
262 | static int tcf_skbmod_delete(struct net *net, u32 index) | ||
263 | { | ||
264 | struct tc_action_net *tn = net_generic(net, skbmod_net_id); | ||
265 | |||
266 | return tcf_idr_delete_index(tn, index); | ||
267 | } | ||
268 | |||
269 | static struct tc_action_ops act_skbmod_ops = { | 262 | static struct tc_action_ops act_skbmod_ops = { |
270 | .kind = "skbmod", | 263 | .kind = "skbmod", |
271 | .type = TCA_ACT_SKBMOD, | 264 | .type = TCA_ACT_SKBMOD, |
@@ -276,7 +269,6 @@ static struct tc_action_ops act_skbmod_ops = { | |||
276 | .cleanup = tcf_skbmod_cleanup, | 269 | .cleanup = tcf_skbmod_cleanup, |
277 | .walk = tcf_skbmod_walker, | 270 | .walk = tcf_skbmod_walker, |
278 | .lookup = tcf_skbmod_search, | 271 | .lookup = tcf_skbmod_search, |
279 | .delete = tcf_skbmod_delete, | ||
280 | .size = sizeof(struct tcf_skbmod), | 272 | .size = sizeof(struct tcf_skbmod), |
281 | }; | 273 | }; |
282 | 274 | ||
diff --git a/net/sched/act_tunnel_key.c b/net/sched/act_tunnel_key.c index 8f09cf08d8fe..420759153d5f 100644 --- a/net/sched/act_tunnel_key.c +++ b/net/sched/act_tunnel_key.c | |||
@@ -548,13 +548,6 @@ static int tunnel_key_search(struct net *net, struct tc_action **a, u32 index, | |||
548 | return tcf_idr_search(tn, a, index); | 548 | return tcf_idr_search(tn, a, index); |
549 | } | 549 | } |
550 | 550 | ||
551 | static int tunnel_key_delete(struct net *net, u32 index) | ||
552 | { | ||
553 | struct tc_action_net *tn = net_generic(net, tunnel_key_net_id); | ||
554 | |||
555 | return tcf_idr_delete_index(tn, index); | ||
556 | } | ||
557 | |||
558 | static struct tc_action_ops act_tunnel_key_ops = { | 551 | static struct tc_action_ops act_tunnel_key_ops = { |
559 | .kind = "tunnel_key", | 552 | .kind = "tunnel_key", |
560 | .type = TCA_ACT_TUNNEL_KEY, | 553 | .type = TCA_ACT_TUNNEL_KEY, |
@@ -565,7 +558,6 @@ static struct tc_action_ops act_tunnel_key_ops = { | |||
565 | .cleanup = tunnel_key_release, | 558 | .cleanup = tunnel_key_release, |
566 | .walk = tunnel_key_walker, | 559 | .walk = tunnel_key_walker, |
567 | .lookup = tunnel_key_search, | 560 | .lookup = tunnel_key_search, |
568 | .delete = tunnel_key_delete, | ||
569 | .size = sizeof(struct tcf_tunnel_key), | 561 | .size = sizeof(struct tcf_tunnel_key), |
570 | }; | 562 | }; |
571 | 563 | ||
diff --git a/net/sched/act_vlan.c b/net/sched/act_vlan.c index 209e70ad2c09..033d273afe50 100644 --- a/net/sched/act_vlan.c +++ b/net/sched/act_vlan.c | |||
@@ -296,13 +296,6 @@ static int tcf_vlan_search(struct net *net, struct tc_action **a, u32 index, | |||
296 | return tcf_idr_search(tn, a, index); | 296 | return tcf_idr_search(tn, a, index); |
297 | } | 297 | } |
298 | 298 | ||
299 | static int tcf_vlan_delete(struct net *net, u32 index) | ||
300 | { | ||
301 | struct tc_action_net *tn = net_generic(net, vlan_net_id); | ||
302 | |||
303 | return tcf_idr_delete_index(tn, index); | ||
304 | } | ||
305 | |||
306 | static struct tc_action_ops act_vlan_ops = { | 299 | static struct tc_action_ops act_vlan_ops = { |
307 | .kind = "vlan", | 300 | .kind = "vlan", |
308 | .type = TCA_ACT_VLAN, | 301 | .type = TCA_ACT_VLAN, |
@@ -313,7 +306,6 @@ static struct tc_action_ops act_vlan_ops = { | |||
313 | .cleanup = tcf_vlan_cleanup, | 306 | .cleanup = tcf_vlan_cleanup, |
314 | .walk = tcf_vlan_walker, | 307 | .walk = tcf_vlan_walker, |
315 | .lookup = tcf_vlan_search, | 308 | .lookup = tcf_vlan_search, |
316 | .delete = tcf_vlan_delete, | ||
317 | .size = sizeof(struct tcf_vlan), | 309 | .size = sizeof(struct tcf_vlan), |
318 | }; | 310 | }; |
319 | 311 | ||