Yonghong Song
696c390115
selftests/bpf: add a selftest with __user tag
Added a selftest with three__user usages: a __user pointer-type argument
in bpf_testmod, a __user pointer-type struct member in bpf_testmod,
and a __user pointer-type struct member in vmlinux. In all cases,
directly accessing the user memory will result verification failure.
$ ./test_progs -v -n 22/3
...
libbpf: prog 'test_user1': BPF program load failed: Permission denied
libbpf: prog 'test_user1': -- BEGIN PROG LOAD LOG --
R1 type=ctx expected=fp
0: R1=ctx(id=0,off=0,imm=0) R10=fp0
; int BPF_PROG(test_user1, struct bpf_testmod_btf_type_tag_1 *arg)
0: (79) r1 = *(u64 *)(r1 +0)
func 'bpf_testmod_test_btf_type_tag_user_1' arg0 has btf_id 136561 type STRUCT 'bpf_testmod_btf_type_tag_1'
1: R1_w=user_ptr_bpf_testmod_btf_type_tag_1(id=0,off=0,imm=0)
; g = arg->a;
1: (61) r1 = *(u32 *)(r1 +0)
R1 invalid mem access 'user_ptr_'
...
#22/3 btf_tag/btf_type_tag_user_mod1:OK
$ ./test_progs -v -n 22/4
...
libbpf: prog 'test_user2': BPF program load failed: Permission denied
libbpf: prog 'test_user2': -- BEGIN PROG LOAD LOG --
R1 type=ctx expected=fp
0: R1=ctx(id=0,off=0,imm=0) R10=fp0
; int BPF_PROG(test_user2, struct bpf_testmod_btf_type_tag_2 *arg)
0: (79) r1 = *(u64 *)(r1 +0)
func 'bpf_testmod_test_btf_type_tag_user_2' arg0 has btf_id 136563 type STRUCT 'bpf_testmod_btf_type_tag_2'
1: R1_w=ptr_bpf_testmod_btf_type_tag_2(id=0,off=0,imm=0)
; g = arg->p->a;
1: (79) r1 = *(u64 *)(r1 +0) ; R1_w=user_ptr_bpf_testmod_btf_type_tag_1(id=0,off=0,imm=0)
; g = arg->p->a;
2: (61) r1 = *(u32 *)(r1 +0)
R1 invalid mem access 'user_ptr_'
...
#22/4 btf_tag/btf_type_tag_user_mod2:OK
$ ./test_progs -v -n 22/5
...
libbpf: prog 'test_sys_getsockname': BPF program load failed: Permission denied
libbpf: prog 'test_sys_getsockname': -- BEGIN PROG LOAD LOG --
R1 type=ctx expected=fp
0: R1=ctx(id=0,off=0,imm=0) R10=fp0
; int BPF_PROG(test_sys_getsockname, int fd, struct sockaddr *usockaddr,
0: (79) r1 = *(u64 *)(r1 +8)
func '__sys_getsockname' arg1 has btf_id 2319 type STRUCT 'sockaddr'
1: R1_w=user_ptr_sockaddr(id=0,off=0,imm=0)
; g = usockaddr->sa_family;
1: (69) r1 = *(u16 *)(r1 +0)
R1 invalid mem access 'user_ptr_'
...
#22/5 btf_tag/btf_type_tag_user_vmlinux:OK
Signed-off-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20220127154616.659314-1-yhs@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2022-01-27 12:03:46 -08:00
..
2021-12-16 19:43:49 -08:00
2021-02-08 17:55:01 -08:00
2021-12-02 12:10:15 -08:00
2022-01-26 20:04:01 -08:00
2020-06-28 10:06:53 -07:00
2022-01-20 14:32:00 -08:00
2021-11-25 23:37:38 +01:00
2022-01-26 20:04:01 -08:00
2022-01-18 15:45:06 -08:00
2021-10-08 15:17:00 -07:00
2022-01-24 19:59:38 -08:00
2021-11-30 10:56:28 -08:00
2022-01-18 14:27:39 -08:00
2022-01-18 14:26:42 -08:00
2021-12-14 14:38:05 -08:00
2021-12-13 13:36:08 -08:00
2021-12-02 15:23:40 -08:00
2021-12-08 23:05:26 -08:00
2021-11-26 00:15:03 +01:00
2021-10-25 20:39:42 -07:00
2021-01-12 17:23:47 -08:00
2021-08-16 18:38:52 -07:00
2021-12-16 21:41:18 +01:00
2021-11-11 16:54:06 -08:00
2022-01-27 12:03:46 -08:00
2021-11-11 17:41:11 -08:00
2022-01-20 21:19:05 -08:00
2021-10-08 15:17:00 -07:00
2021-11-07 08:34:24 -08:00
2022-01-12 17:01:37 -08:00
2021-11-07 08:34:24 -08:00
2022-01-19 12:51:30 -08:00
2021-10-08 15:17:00 -07:00
2021-05-25 17:32:35 -07:00
2021-10-08 15:10:43 -07:00
2021-10-08 15:17:00 -07:00
2021-01-20 14:23:00 -08:00
2021-12-14 14:38:05 -08:00
2021-10-22 16:09:14 -07:00
2020-08-13 16:45:41 -07:00
2021-12-02 11:18:36 -08:00
2021-01-08 13:39:24 -08:00
2021-12-14 14:38:05 -08:00
2020-08-01 23:10:42 -07:00
2022-01-19 01:27:03 +01:00
2021-11-01 14:10:00 -07:00
2020-05-01 10:36:32 -07:00
2020-07-01 09:06:12 +02:00
2021-11-08 22:17:55 +01:00
2021-10-28 16:30:07 -07:00
2021-10-28 16:30:07 -07:00
2022-01-25 17:59:07 -08:00
2021-10-28 16:30:07 -07:00
2021-11-07 08:34:23 -08:00
2021-10-28 16:30:07 -07:00
2021-11-07 11:54:51 -08:00
2021-11-07 08:34:24 -08:00
2021-11-07 08:34:24 -08:00
2022-01-12 17:01:38 -08:00
2021-02-26 13:23:53 -08:00
2021-10-25 21:43:05 -07:00
2021-12-13 09:25:59 -08:00
2021-07-22 20:09:16 -07:00
2021-12-14 14:38:05 -08:00
2022-01-25 17:59:07 -08:00
2022-01-12 17:01:38 -08:00
2022-01-12 17:01:38 -08:00
2021-11-07 08:34:23 -08:00
2020-11-05 20:04:46 -08:00
2021-05-25 17:32:35 -07:00
2021-11-15 20:37:11 -08:00
2021-12-02 15:23:40 -08:00
2022-01-18 14:26:42 -08:00
2021-12-18 13:27:41 -08:00
2021-10-28 16:30:07 -07:00
2020-10-02 14:59:25 -07:00
2021-11-07 08:34:23 -08:00
2021-11-25 23:05:23 +01:00
2021-12-17 23:11:13 +01:00
2021-05-25 17:32:35 -07:00
2021-04-23 14:05:27 -07:00
2021-04-23 14:05:27 -07:00
2021-04-23 14:05:27 -07:00
2021-11-07 08:34:23 -08:00
2022-01-26 12:07:01 -08:00
2021-05-24 13:30:52 -07:00
2020-11-05 19:55:57 -08:00
2021-11-07 08:34:23 -08:00
2021-12-02 11:18:36 -08:00
2020-09-15 18:28:27 -07:00
2021-11-07 09:14:15 -08:00
2021-04-08 23:54:48 -07:00
2021-10-08 15:17:00 -07:00
2021-10-08 13:22:57 -07:00
2021-11-03 15:43:09 +01:00
2021-08-24 14:17:53 -07:00
2021-10-08 15:17:00 -07:00
2021-05-25 17:32:35 -07:00
2020-09-30 23:21:06 -07:00
2021-05-25 17:32:35 -07:00
2021-11-11 16:54:05 -08:00
2021-05-25 17:32:35 -07:00
2021-10-08 15:17:00 -07:00
2021-11-25 23:37:38 +01:00
2021-11-07 08:34:23 -08:00
2021-11-07 08:34:23 -08:00
2020-11-19 11:58:15 -08:00
2021-10-08 15:17:00 -07:00
2021-11-28 22:24:57 -08:00
2021-05-25 17:32:35 -07:00
2021-11-26 00:15:03 +01:00
2021-05-25 17:32:35 -07:00
2021-11-07 08:34:23 -08:00
2021-11-07 08:34:23 -08:00
2021-10-21 17:10:11 -07:00
2021-10-06 12:34:02 -07:00
2021-09-28 13:51:19 -07:00
2021-10-25 14:45:45 -07:00
2021-11-25 23:37:38 +01:00
2021-10-28 16:30:07 -07:00
2020-07-25 20:37:02 -07:00
2021-12-14 22:16:54 +01:00
2021-10-08 15:17:00 -07:00
2021-08-17 14:08:30 -07:00
2021-11-07 08:34:24 -08:00
2021-09-28 13:51:19 -07:00
2021-12-14 22:16:54 +01:00
2021-10-08 15:17:00 -07:00
2021-11-07 09:14:15 -08:00
2021-11-07 08:34:23 -08:00
2021-10-21 15:11:06 -07:00
2021-10-21 17:10:10 -07:00
2021-10-08 15:17:00 -07:00
2021-10-25 14:45:45 -07:00
2021-12-14 22:16:54 +01:00
2021-02-11 17:44:41 -08:00
2022-01-20 21:33:32 -08:00
2021-11-25 23:37:38 +01:00
2022-01-12 17:01:38 -08:00
2021-12-14 14:38:05 -08:00
2021-12-02 15:23:40 -08:00
2021-08-20 01:10:01 +02:00
2022-01-19 13:05:13 -08:00
2021-11-07 08:34:23 -08:00
2021-11-07 08:34:23 -08:00
2021-02-10 11:05:34 -08:00
2022-01-25 17:59:07 -08:00
2021-12-14 14:38:05 -08:00
2021-12-14 14:38:05 -08:00
2021-05-13 17:23:57 -07:00
2020-11-09 22:15:23 +01:00
2021-05-19 00:33:40 +02:00
2022-01-12 17:01:38 -08:00
2021-11-07 08:34:23 -08:00
2021-11-07 08:34:23 -08:00
2021-02-26 11:51:48 -08:00
2022-01-26 20:04:01 -08:00
2021-05-17 17:52:20 +02:00
2022-01-05 13:35:18 +01:00
2021-11-07 08:34:23 -08:00
2021-05-25 17:32:35 -07:00
2021-12-02 15:23:40 -08:00
2020-12-03 17:23:24 -08:00
2022-01-24 21:04:10 -08:00
2021-11-26 00:15:03 +01:00
2020-11-18 01:36:27 +01:00
2021-12-02 15:23:40 -08:00
2021-10-28 16:30:07 -07:00
2021-12-29 17:54:40 -08:00
2021-04-25 21:09:02 -07:00
2021-12-14 14:38:05 -08:00
2020-10-09 22:03:06 +02:00
2020-11-13 01:42:11 +01:00
2021-12-11 17:40:23 -08:00
2021-10-08 15:17:00 -07:00
2021-10-08 15:17:00 -07:00
2021-11-07 08:34:23 -08:00
2020-09-29 13:09:24 -07:00
2021-10-28 16:30:07 -07:00
2021-10-28 16:30:07 -07:00
2021-12-14 14:38:05 -08:00
2021-05-25 17:32:35 -07:00
2020-08-13 16:45:41 -07:00
2021-10-28 16:30:07 -07:00
2022-01-21 14:14:03 -08:00
2022-01-21 14:14:02 -08:00
2022-01-24 23:02:29 +01:00
2021-11-26 00:15:03 +01:00
2022-01-21 14:14:02 -08:00
2021-07-07 19:51:13 -07:00
2022-01-24 23:02:29 +01:00
2022-01-24 23:02:29 +01:00
2022-01-24 23:02:29 +01:00
2022-01-24 23:02:29 +01:00
2020-10-02 16:46:20 +02:00
2021-11-07 08:34:23 -08:00
2021-11-26 00:15:03 +01:00
2021-09-26 13:07:28 -07:00