[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220319173036.23352-9-laoar.shao@gmail.com>
Date: Sat, 19 Mar 2022 17:30:30 +0000
From: Yafang Shao <laoar.shao@...il.com>
To: roman.gushchin@...ux.dev, ast@...nel.org, daniel@...earbox.net,
andrii@...nel.org, kafai@...com, songliubraving@...com, yhs@...com,
john.fastabend@...il.com, kpsingh@...nel.org, shuah@...nel.org
Cc: netdev@...r.kernel.org, bpf@...r.kernel.org,
linux-kselftest@...r.kernel.org, Yafang Shao <laoar.shao@...il.com>
Subject: [PATCH 08/14] bpf: Aggregate flags for BPF_PROG_LOAD command
It will be easy to read if we aggregate the flags for BPF_PROG_LOAD into
Signed-off-by: Yafang Shao <laoar.shao@...il.com>
---
include/uapi/linux/bpf.h | 15 +++++++++------
tools/include/uapi/linux/bpf.h | 15 +++++++++------
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index e2dba6cdd88d..93ee04fb8c62 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -1065,12 +1065,14 @@ enum bpf_link_type {
#define BPF_F_ALLOW_MULTI (1U << 1)
#define BPF_F_REPLACE (1U << 2)
+/* flags for BPF_PROG_LOAD command */
+enum {
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
* verifier will perform strict alignment checking as if the kernel
* has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set,
* and NET_IP_ALIGN defined to 2.
*/
-#define BPF_F_STRICT_ALIGNMENT (1U << 0)
+ BPF_F_STRICT_ALIGNMENT = (1U << 0),
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the
* verifier will allow any alignment whatsoever. On platforms
@@ -1084,7 +1086,7 @@ enum bpf_link_type {
* of an unaligned access the alignment check would trigger before
* the one we are interested in.
*/
-#define BPF_F_ANY_ALIGNMENT (1U << 1)
+ BPF_F_ANY_ALIGNMENT = (1U << 1),
/* BPF_F_TEST_RND_HI32 is used in BPF_PROG_LOAD command for testing purpose.
* Verifier does sub-register def/use analysis and identifies instructions whose
@@ -1102,10 +1104,10 @@ enum bpf_link_type {
* Then, if verifier is not doing correct analysis, such randomization will
* regress tests to expose bugs.
*/
-#define BPF_F_TEST_RND_HI32 (1U << 2)
+ BPF_F_TEST_RND_HI32 = (1U << 2),
/* The verifier internal test flag. Behavior is undefined */
-#define BPF_F_TEST_STATE_FREQ (1U << 3)
+ BPF_F_TEST_STATE_FREQ = (1U << 3),
/* If BPF_F_SLEEPABLE is used in BPF_PROG_LOAD command, the verifier will
* restrict map and helper usage for such programs. Sleepable BPF programs can
@@ -1113,12 +1115,13 @@ enum bpf_link_type {
* Such programs are allowed to use helpers that may sleep like
* bpf_copy_from_user().
*/
-#define BPF_F_SLEEPABLE (1U << 4)
+ BPF_F_SLEEPABLE = (1U << 4),
/* If BPF_F_XDP_HAS_FRAGS is used in BPF_PROG_LOAD command, the loaded program
* fully support xdp frags.
*/
-#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+ BPF_F_XDP_HAS_FRAGS = (1U << 5),
+};
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index e2dba6cdd88d..71a4d8fdc880 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -1065,12 +1065,14 @@ enum bpf_link_type {
#define BPF_F_ALLOW_MULTI (1U << 1)
#define BPF_F_REPLACE (1U << 2)
+/* flags for BPF_PROG_LOAD */
+enum {
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
* verifier will perform strict alignment checking as if the kernel
* has been built with CONFIG_EFFICIENT_UNALIGNED_ACCESS not set,
* and NET_IP_ALIGN defined to 2.
*/
-#define BPF_F_STRICT_ALIGNMENT (1U << 0)
+ BPF_F_STRICT_ALIGNMENT = (1U << 0),
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the
* verifier will allow any alignment whatsoever. On platforms
@@ -1084,7 +1086,7 @@ enum bpf_link_type {
* of an unaligned access the alignment check would trigger before
* the one we are interested in.
*/
-#define BPF_F_ANY_ALIGNMENT (1U << 1)
+ BPF_F_ANY_ALIGNMENT = (1U << 1),
/* BPF_F_TEST_RND_HI32 is used in BPF_PROG_LOAD command for testing purpose.
* Verifier does sub-register def/use analysis and identifies instructions whose
@@ -1102,10 +1104,10 @@ enum bpf_link_type {
* Then, if verifier is not doing correct analysis, such randomization will
* regress tests to expose bugs.
*/
-#define BPF_F_TEST_RND_HI32 (1U << 2)
+ BPF_F_TEST_RND_HI32 = (1U << 2),
/* The verifier internal test flag. Behavior is undefined */
-#define BPF_F_TEST_STATE_FREQ (1U << 3)
+ BPF_F_TEST_STATE_FREQ = (1U << 3),
/* If BPF_F_SLEEPABLE is used in BPF_PROG_LOAD command, the verifier will
* restrict map and helper usage for such programs. Sleepable BPF programs can
@@ -1113,12 +1115,13 @@ enum bpf_link_type {
* Such programs are allowed to use helpers that may sleep like
* bpf_copy_from_user().
*/
-#define BPF_F_SLEEPABLE (1U << 4)
+ BPF_F_SLEEPABLE = (1U << 4),
/* If BPF_F_XDP_HAS_FRAGS is used in BPF_PROG_LOAD command, the loaded program
* fully support xdp frags.
*/
-#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+ BPF_F_XDP_HAS_FRAGS = (1U << 5),
+};
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
--
2.17.1
Powered by blists - more mailing lists