summaryrefslogtreecommitdiffstats
path: root/include/net/sch_generic.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-12-31 13:37:13 -0800
committerDavid S. Miller <davem@davemloft.net>2019-12-31 13:37:13 -0800
commit31d518f35e1a80268a24a855be9477eb458540ad (patch)
tree28494f630aede8f95d4ed2ebbfd14c222bd24fa6 /include/net/sch_generic.h
parent9e860947d8d7a1504476ac49abfce90a4ce600f3 (diff)
parent738d2902773e30939a982c8df7a7f94293659810 (diff)
downloadlinux-stable-31d518f35e1a80268a24a855be9477eb458540ad.tar.gz
linux-stable-31d518f35e1a80268a24a855be9477eb458540ad.tar.bz2
linux-stable-31d518f35e1a80268a24a855be9477eb458540ad.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Simple overlapping changes in bpf land wrt. bpf_helper_defs.h handling. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r--include/net/sch_generic.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 144f264ea394..fceddf89592a 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -308,6 +308,7 @@ struct tcf_proto_ops {
int (*delete)(struct tcf_proto *tp, void *arg,
bool *last, bool rtnl_held,
struct netlink_ext_ack *);
+ bool (*delete_empty)(struct tcf_proto *tp);
void (*walk)(struct tcf_proto *tp,
struct tcf_walker *arg, bool rtnl_held);
int (*reoffload)(struct tcf_proto *tp, bool add,
@@ -336,6 +337,10 @@ struct tcf_proto_ops {
int flags;
};
+/* Classifiers setting TCF_PROTO_OPS_DOIT_UNLOCKED in tcf_proto_ops->flags
+ * are expected to implement tcf_proto_ops->delete_empty(), otherwise race
+ * conditions can occur when filters are inserted/deleted simultaneously.
+ */
enum tcf_proto_ops_flags {
TCF_PROTO_OPS_DOIT_UNLOCKED = 1,
};