John Fastabend
86ed4be68f
bpf, selftests: Add tests for ctx access in sock_ops with single register
...
To verify fix ("bpf: sock_ops ctx access may stomp registers in corner case")
we want to force compiler to generate the following code when accessing a
field with BPF_TCP_SOCK_GET_COMMON,
r1 = *(u32 *)(r1 + 96) // r1 is skops ptr
Rather than depend on clang to do this we add the test with inline asm to
the tcpbpf test. This saves us from having to create another runner and
ensures that if we break this again test_tcpbpf will crash.
With above code we get the xlated code,
11: (7b) *(u64 *)(r1 +32) = r9
12: (61) r9 = *(u32 *)(r1 +28)
13: (15) if r9 == 0x0 goto pc+4
14: (79) r9 = *(u64 *)(r1 +32)
15: (79) r1 = *(u64 *)(r1 +0)
16: (61) r1 = *(u32 *)(r1 +2348)
17: (05) goto pc+1
18: (79) r9 = *(u64 *)(r1 +32)
We also add the normal case where src_reg != dst_reg so we can compare
code generation easily from llvm-objdump and ensure that case continues
to work correctly. The normal code is xlated to,
20: (b7) r1 = 0
21: (61) r1 = *(u32 *)(r3 +28)
22: (15) if r1 == 0x0 goto pc+2
23: (79) r1 = *(u64 *)(r3 +0)
24: (61) r1 = *(u32 *)(r1 +2348)
Where the temp variable is not used.
Signed-off-by: John Fastabend <john.fastabend@gmail.com >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
Acked-by: Song Liu <songliubraving@fb.com >
Acked-by: Martin KaFai Lau <kafai@fb.com >
Link: https://lore.kernel.org/bpf/159718351457.4728.3295119261717842496.stgit@john-Precision-5820-Tower
2020-08-13 22:40:43 +02:00
..
2020-06-25 16:08:47 -07:00
2020-03-23 20:51:55 +01:00
2020-06-01 15:21:03 -07:00
2020-07-25 20:16:34 -07:00
2020-07-25 20:16:33 -07:00
2020-06-24 18:37:59 -07:00
2020-07-25 20:16:34 -07:00
2020-07-25 20:16:33 -07:00
2020-07-25 20:16:34 -07:00
2020-06-24 18:37:59 -07:00
2020-07-21 13:26:26 -07:00
2020-06-24 18:37:59 -07:00
2020-07-03 23:25:40 +02:00
2020-06-24 18:37:59 -07:00
2020-07-21 13:26:26 -07:00
2020-07-21 13:26:26 -07:00
2020-05-09 17:05:27 -07:00
2020-05-09 17:05:27 -07:00
2020-06-24 18:37:59 -07:00
2020-06-24 18:37:59 -07:00
2020-07-25 20:16:34 -07:00
2020-07-31 00:43:49 +02:00
2020-06-24 18:37:59 -07:00
2020-07-21 13:26:26 -07:00
2020-07-21 13:26:26 -07:00
2020-07-28 12:22:37 +02:00
2020-06-24 18:37:59 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-12-15 16:53:51 -08:00
2019-12-15 16:53:51 -08:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-11-04 16:06:56 +01:00
2019-12-15 16:53:51 -08:00
2019-08-07 14:43:49 -07:00
2019-11-04 16:06:56 +01:00
2019-11-04 16:06:56 +01:00
2019-11-04 16:06:56 +01:00
2019-11-04 16:06:56 +01:00
2019-11-04 16:06:56 +01:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-10-15 16:06:05 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-08-07 14:43:49 -07:00
2019-11-04 16:06:56 +01:00
2019-11-04 16:06:56 +01:00
2020-07-13 10:42:03 -07:00
2019-05-24 14:05:58 -07:00
2019-05-24 14:05:58 -07:00
2019-05-24 14:05:58 -07:00
2019-05-24 14:05:58 -07:00
2019-05-24 14:05:58 -07:00
2019-10-09 15:38:36 -07:00
2020-03-04 17:00:06 +01:00
2020-07-25 20:16:35 -07:00
2020-07-25 20:16:36 -07:00
2020-07-25 20:16:36 -07:00
2020-07-25 20:16:35 -07:00
2020-05-14 18:41:08 -07:00
2020-06-24 11:21:03 -07:00
2020-01-20 16:37:45 -08:00
2020-05-19 11:32:04 -07:00
2020-05-19 11:32:04 -07:00
2020-05-11 16:56:47 +02:00
2020-01-20 16:37:45 -08:00
2020-06-30 22:21:29 +02:00
2020-03-02 16:25:14 -08:00
2020-03-02 16:25:14 -08:00
2020-06-30 22:21:29 +02:00
2020-04-24 17:34:30 -07:00
2020-01-20 16:37:45 -08:00
2020-03-02 16:25:14 -08:00
2020-06-11 16:05:56 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-04-02 19:42:52 -07:00
2020-06-22 22:22:59 +02:00
2020-03-04 13:41:06 -08:00
2020-01-20 16:37:45 -08:00
2020-07-25 20:16:35 -07:00
2020-06-01 14:38:22 -07:00
2019-05-23 16:20:57 +02:00
2019-05-23 16:20:57 +02:00
2019-05-23 16:20:57 +02:00
2019-06-19 02:22:52 +02:00
2019-06-19 02:22:52 +02:00
2020-01-10 17:20:07 +01:00
2020-01-20 16:37:45 -08:00
2020-06-01 14:38:22 -07:00
2020-01-20 16:37:45 -08:00
2019-02-11 20:31:38 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-03-17 19:28:27 +01:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-06-17 10:54:05 -07:00
2019-06-19 02:22:52 +02:00
2019-06-19 02:22:52 +02:00
2019-06-19 02:22:52 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-03-02 16:25:14 -08:00
2020-06-28 10:06:53 -07:00
2020-04-24 17:47:40 -07:00
2020-04-28 17:35:03 -07:00
2020-04-24 17:47:40 -07:00
2020-04-24 17:47:40 -07:00
2020-03-30 17:36:41 -07:00
2020-06-02 11:50:23 -07:00
2020-04-26 10:00:36 -07:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-08-01 23:10:42 -07:00
2020-05-01 10:36:32 -07:00
2020-07-01 09:06:12 +02:00
2020-03-30 15:00:30 -07:00
2020-06-24 11:10:59 -07:00
2020-03-30 01:17:35 +02:00
2020-01-20 16:37:45 -08:00
2020-01-10 17:20:07 +01:00
2020-01-20 16:37:45 -08:00
2020-01-10 17:20:07 +01:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2019-07-03 15:06:33 +02:00
2020-06-22 17:01:48 -07:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-03-02 22:06:27 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-05-20 20:21:53 -07:00
2020-03-12 17:40:47 -07:00
2020-04-28 17:27:08 -07:00
2020-05-15 13:48:59 -07:00
2020-03-02 16:25:14 -08:00
2020-07-09 00:44:45 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-22 23:04:53 +01:00
2020-01-20 16:37:45 -08:00
2020-03-02 16:25:14 -08:00
2019-02-11 20:31:38 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-06-01 14:38:22 -07:00
2020-06-01 14:38:22 -07:00
2020-01-20 16:37:45 -08:00
2020-01-24 22:12:13 +01:00
2020-03-05 14:02:41 -08:00
2020-04-29 23:31:00 +02:00
2020-05-21 17:44:25 -07:00
2020-07-17 20:18:17 -07:00
2020-01-20 16:37:45 -08:00
2020-03-03 16:23:59 -08:00
2020-06-01 14:38:21 -07:00
2020-07-13 17:07:43 -07:00
2020-06-01 14:38:20 -07:00
2020-01-20 16:37:45 -08:00
2019-02-11 20:31:38 -08:00
2019-02-11 20:31:38 -08:00
2020-06-28 08:33:28 -07:00
2020-02-21 22:29:46 +01:00
2020-01-20 16:37:45 -08:00
2019-02-11 20:31:38 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-04-28 15:31:59 -07:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-08-13 22:40:43 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-03-02 16:25:14 -08:00
2020-01-20 16:37:45 -08:00
2020-06-24 00:04:36 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-07-01 15:10:27 -07:00
2020-05-14 21:21:57 -07:00
2020-05-14 21:21:57 -07:00
2020-03-12 17:47:38 -07:00
2020-06-09 11:36:19 -07:00
2020-07-25 20:37:02 -07:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-07-16 17:00:32 +02:00
2020-06-25 22:36:00 +02:00
2020-01-20 16:37:45 -08:00
2020-07-13 16:55:49 -07:00
2020-05-13 12:19:38 -07:00
2020-07-31 00:43:49 +02:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00
2020-01-20 16:37:45 -08:00