Alexei Starovoitov
2fe99eb0cc
bpf: Add x86-64 JIT support for PROBE_MEM32 pseudo instructions.
...
Add support for [LDX | STX | ST], PROBE_MEM32, [B | H | W | DW] instructions.
They are similar to PROBE_MEM instructions with the following differences:
- PROBE_MEM has to check that the address is in the kernel range with
src_reg + insn->off >= TASK_SIZE_MAX + PAGE_SIZE check
- PROBE_MEM doesn't support store
- PROBE_MEM32 relies on the verifier to clear upper 32-bit in the register
- PROBE_MEM32 adds 64-bit kern_vm_start address (which is stored in %r12 in the prologue)
Due to bpf_arena constructions such %r12 + %reg + off16 access is guaranteed
to be within arena virtual range, so no address check at run-time.
- PROBE_MEM32 allows STX and ST. If they fault the store is a nop.
When LDX faults the destination register is zeroed.
Signed-off-by: Alexei Starovoitov <[email protected] >
Signed-off-by: Andrii Nakryiko <[email protected] >
Acked-by: Kumar Kartikeya Dwivedi <[email protected] >
Link: https://lore.kernel.org/bpf/[email protected]
2024-03-11 15:37:24 -07:00
..
2024-01-18 11:37:24 -08:00
2023-10-09 18:14:15 +02:00
2024-01-04 17:01:13 +01:00
2024-02-07 14:43:29 +01:00
2023-10-05 13:34:05 +02:00
2024-01-18 15:16:57 -08:00
2023-05-24 12:20:45 +05:30
2023-10-24 13:08:14 -07:00
2024-01-04 17:02:49 +01:00
2024-02-21 12:41:24 +00:00
2024-02-13 11:02:53 +01:00
2024-01-14 23:00:50 +01:00
2024-02-04 15:01:14 +00:00
2023-12-13 21:26:13 -08:00
2024-01-11 14:19:23 -08:00
2023-10-16 12:44:04 -04:00
2023-06-05 09:56:36 +01:00
2024-01-29 13:00:23 +00:00
2024-02-22 15:29:26 -08:00
2024-01-02 17:54:05 +01:00
2024-01-31 23:13:57 +01:00
2023-08-25 07:42:58 +01:00
2023-09-18 09:28:22 +01:00
2023-12-17 12:00:00 +00:00
2024-02-21 12:46:17 +00:00
2023-11-15 23:13:26 +01:00
2023-09-11 08:13:18 +00:00
2023-12-19 16:15:14 +00:00
2024-01-10 16:43:55 -08:00
2023-12-22 11:12:55 +00:00
2024-01-24 15:11:38 +00:00
2024-01-10 16:13:57 -08:00
2024-01-17 16:47:17 -08:00
2024-02-09 10:26:08 +00:00
2024-01-18 16:22:43 -08:00
2024-01-02 16:51:39 -06:00
2020-01-24 21:03:53 +01:00
2021-05-06 19:24:11 -07:00
2024-01-04 15:19:17 +01:00
2023-08-18 10:18:56 -07:00
2019-05-24 17:27:11 +02:00
2020-09-24 16:44:44 -07:00
2024-01-03 11:31:12 +01:00
2021-03-08 15:16:30 -08:00
2017-11-07 10:32:44 +01:00
2024-02-06 09:44:03 -07:00
2020-07-20 10:27:11 +01:00
2023-09-26 00:44:33 -06:00
2024-01-16 15:02:25 -07:00
2024-02-01 13:06:40 +01:00
2022-10-12 11:00:22 -07:00
2019-04-05 16:02:30 -10:00
2024-01-11 13:58:04 -08:00
2024-01-17 14:16:34 -07:00
2024-01-11 13:58:04 -08:00
2023-06-14 20:24:03 -06:00
2023-02-22 08:27:49 +09:00
2024-02-11 14:06:24 -08:00
2024-01-03 21:08:25 -08:00
2024-03-11 15:37:23 -07:00
2024-03-06 15:17:31 -08:00
2024-02-13 15:41:17 -08:00
2024-03-11 15:37:24 -07:00
2024-01-31 20:40:52 -08:00
2024-02-13 18:46:46 -08:00
2023-12-29 11:58:36 -08:00
2021-04-15 17:04:24 +01:00
2023-02-03 08:20:55 -07:00
2023-08-24 16:20:25 -07:00
2023-03-01 10:01:22 -08:00
2022-05-23 17:51:12 -07:00
2017-11-02 11:10:55 +01:00
2023-06-12 08:04:05 -06:00
2022-09-30 14:50:11 -07:00
2021-06-22 16:53:17 +02:00
2023-06-19 16:19:28 -07:00
2023-10-03 19:51:37 +02:00
2024-02-15 11:14:33 -08:00
2024-02-15 11:14:33 -08:00
2023-07-17 16:08:08 -07:00
2023-01-19 15:06:42 +01:00
2023-11-03 15:44:25 -10:00
2023-01-31 12:44:20 +01:00
2024-02-03 18:31:17 +01:00
2020-05-19 12:55:29 +02:00
2024-01-09 11:18:47 -08:00
2024-02-01 13:06:40 +01:00
2023-12-29 12:22:31 -08:00
2023-12-29 12:22:26 -08:00
2024-02-20 22:50:52 -08:00
2019-05-24 17:27:11 +02:00
2024-02-09 23:31:16 -05:00
2023-11-27 11:24:55 +01:00
2021-07-08 11:48:20 -07:00
2023-06-09 17:44:16 -07:00
2019-06-05 17:37:05 +02:00
2023-05-29 23:23:04 +09:00
2024-01-18 15:16:57 -08:00
2021-06-17 13:21:06 +02:00
2024-01-18 15:16:57 -08:00
2024-01-30 22:11:13 +05:30
2023-07-10 14:36:12 +02:00
2024-02-29 14:24:56 -08:00
2023-08-04 15:28:41 +02:00
2020-08-06 16:13:13 +02:00
2024-01-18 09:48:40 -08:00
2019-06-05 17:36:37 +02:00
2023-12-11 11:19:18 +01:00
2023-01-05 15:12:12 +00:00
2020-06-04 19:06:25 -07:00
2023-02-02 22:50:00 -08:00
2017-11-02 11:10:55 +01:00
2023-02-06 19:06:58 +01:00
2024-02-28 12:18:05 +00:00
2023-12-29 01:25:58 +09:00
2023-12-10 15:32:48 +09:00
2019-10-17 16:44:36 +02:00
2022-07-07 10:50:46 +02:00
2023-12-12 14:24:13 +01:00
2023-12-12 14:24:14 +01:00
2024-03-11 15:37:24 -07:00
2024-01-08 09:36:55 +09:00
2023-11-24 18:09:19 -08:00
2019-06-24 09:16:47 +10:00
2020-11-16 16:31:41 +01:00
2024-01-19 11:59:11 -08:00
2023-06-06 21:39:55 +09:00
2022-12-01 10:46:54 -05:00
2023-10-18 14:08:29 +02:00
2020-07-29 16:14:27 +02:00
2024-02-22 10:06:29 -08:00
2024-01-05 15:42:25 +00:00
2023-10-08 20:44:26 -07:00
2024-01-12 15:34:50 +01:00
2023-10-05 13:11:29 +02:00
2017-11-02 11:10:55 +01:00
2020-04-18 15:44:54 -05:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2022-02-23 10:58:28 +01:00
2020-07-20 17:00:02 -07:00
2023-04-08 13:45:38 -07:00
2024-01-31 10:27:08 +01:00
2019-05-30 11:26:35 -07:00
2024-01-02 11:25:28 +01:00
2024-02-06 10:56:35 +01:00
2023-12-29 11:58:42 -08:00
2024-01-08 15:27:15 -08:00
2023-09-04 11:26:29 -07:00
2024-01-18 21:10:43 +01:00
2024-02-21 15:19:04 +01:00
2024-02-04 15:41:18 +00:00
2024-01-23 15:13:54 +01:00
2024-02-28 19:36:39 -08:00
2023-12-10 15:32:48 +09:00
2022-04-06 13:43:44 -07:00
2023-09-12 17:50:53 +02:00
2021-05-21 12:48:39 -04:00
2019-07-25 13:03:18 +02:00
2023-05-30 22:04:46 +03:00
2023-10-30 18:01:41 -10:00
2024-01-11 14:19:23 -08:00
2024-03-11 16:58:10 +01:00
2024-02-23 16:45:05 +01:00
2024-01-08 12:27:46 -07:00
2023-02-01 20:54:27 -08:00
2024-03-01 08:42:30 +00:00
2024-01-04 23:42:21 -05:00
2023-12-29 11:58:44 -08:00
2017-11-02 11:10:55 +01:00
2022-06-16 19:58:21 -07:00
2019-12-11 09:12:38 +01:00
2023-10-11 10:11:54 -07:00
2022-10-28 13:37:23 -07:00
2021-03-08 11:43:35 +01:00
2017-11-02 11:10:55 +01:00
2022-02-23 10:58:28 +01:00
2022-02-23 10:58:28 +01:00
2023-12-29 11:58:25 -08:00
2022-02-23 10:58:28 +01:00
2022-07-22 12:53:22 +01:00
2024-01-22 22:26:03 +01:00
2018-01-11 14:39:07 -06:00
2023-05-18 11:40:32 -07:00
2023-11-16 23:45:04 +00:00
2023-03-22 17:09:28 +01:00
2022-02-23 10:58:28 +01:00
2024-01-10 16:43:55 -08:00
2024-02-01 15:12:37 -08:00
2022-05-23 14:45:24 -05:00
2022-03-10 07:41:14 +01:00
2024-01-04 14:37:17 +01:00
2024-02-21 14:56:59 -08:00
2022-12-08 21:49:25 -05:00
2022-10-04 12:06:58 -06:00
2024-02-21 14:56:58 -08:00
2024-02-16 23:20:34 -08:00
2024-01-05 10:17:44 -08:00
2023-08-21 13:37:49 -07:00
2023-12-29 11:58:39 -08:00
2022-07-27 14:04:52 +02:00
2023-12-12 17:20:19 -08:00
2024-01-18 15:16:57 -08:00
2024-01-10 08:45:22 -08:00
2024-01-25 23:52:20 -08:00
2023-06-09 16:25:31 -07:00
2024-01-25 23:52:21 -08:00
2023-11-03 15:31:04 -10:00
2024-01-10 18:00:18 -08:00
2023-12-01 09:51:43 -08:00
2024-01-04 17:01:14 +01:00
2022-08-02 12:34:04 -04:00
2021-07-01 11:06:05 -07:00
2018-03-24 11:25:35 -05:00
2022-12-05 22:22:34 +01:00
2019-10-23 17:23:44 +02:00
2022-02-23 10:58:28 +01:00
2024-01-10 16:43:55 -08:00
2024-03-01 08:44:54 +00:00
2024-02-29 14:24:56 -08:00
2024-01-17 12:02:49 +01:00
2024-02-29 14:24:56 -08:00
2024-01-05 15:42:25 +00:00
2024-02-26 11:46:12 +00:00
2024-01-07 17:54:26 -05:00
2024-02-25 02:10:32 -05:00
2024-01-04 10:47:56 -05:00
2024-01-03 13:33:59 +01:00
2024-02-13 08:46:09 -08:00
2024-01-04 17:01:13 +01:00
2024-01-04 17:01:13 +01:00
2023-10-18 22:35:36 +09:00
2023-10-30 13:20:02 -10:00
2024-01-19 08:17:28 -06:00
2024-01-19 08:17:28 -06:00
2023-12-30 10:25:51 -08:00
2023-10-03 12:17:10 -07:00
2021-09-17 13:52:17 +01:00
2021-07-30 10:58:36 +08:00
2024-01-08 15:27:15 -08:00
2024-01-02 13:16:29 -05:00
2021-02-03 19:05:50 +01:00
2017-11-02 11:10:55 +01:00
2017-11-09 10:23:28 +01:00
2024-01-12 11:55:28 -08:00
2024-01-15 12:10:41 -06:00
2024-01-15 12:10:41 -06:00
2024-01-31 09:03:51 -06:00
2023-10-20 14:15:06 -07:00
2024-01-17 10:50:46 -08:00
2024-02-17 18:45:06 +00:00
2024-01-31 12:30:47 +00:00
2024-01-04 14:35:57 +01:00
2024-01-03 16:21:42 +05:30
2023-08-22 21:31:57 +02:00
2024-01-10 20:59:20 +01:00
2024-01-09 15:00:09 +01:00
2024-02-23 17:27:12 -08:00
2022-07-28 11:29:36 +02:00
2019-05-24 17:36:45 +02:00
2023-12-27 11:49:56 -05:00
2024-02-25 02:10:32 -05:00
2024-01-17 16:47:17 -08:00
2023-01-13 08:40:41 +00:00
2024-01-29 13:00:23 +00:00
2024-02-12 23:04:34 +01:00
2024-01-05 09:33:16 +01:00
2023-08-24 21:34:28 -04:00
2022-12-20 03:13:45 +01:00
2023-08-18 10:19:00 -07:00
2020-04-14 15:58:08 +02:00
2017-11-02 11:10:55 +01:00
2023-12-27 11:50:20 -05:00
2024-01-02 09:33:18 +01:00
2023-06-05 15:28:42 -07:00
2023-10-11 19:43:43 +02:00
2021-06-09 13:37:16 +02:00
2023-12-27 11:49:56 -05:00
2023-12-01 14:53:56 +09:00
2022-03-01 10:59:13 +01:00
2022-12-09 10:42:56 +00:00
2023-12-20 07:54:56 -05:00
2024-01-05 10:17:43 -08:00
2023-06-05 10:55:20 -06:00
2023-12-27 11:49:56 -05:00
2024-02-14 11:20:13 +00:00
2021-08-17 17:12:22 +02:00
2022-11-11 08:38:29 -07:00
2024-01-24 11:48:52 -08:00
2023-10-08 21:16:30 +01:00
2023-12-20 19:26:32 -05:00
2024-01-24 16:21:01 -08:00
2024-02-15 12:17:28 -05:00
2022-02-23 10:58:28 +01:00
2023-12-20 19:26:31 -05:00
2023-12-08 12:02:38 +01:00
2024-02-06 14:42:02 +00:00
2024-01-04 16:05:47 -08:00
2023-10-18 14:34:18 -07:00
2019-05-30 11:26:32 -07:00
2024-02-23 16:22:56 -08:00
2024-01-21 18:09:30 +00:00
2024-01-09 11:18:47 -08:00
2024-01-23 15:13:55 +01:00
2024-01-21 10:21:43 -08:00
2023-12-12 16:20:02 +01:00
2023-12-13 23:41:19 +05:30
2023-12-29 11:58:42 -08:00
2022-11-18 02:18:10 +01:00
2021-12-10 14:06:03 +00:00
2023-04-14 17:31:23 +02:00
2023-01-26 07:00:06 -05:00
2021-04-19 16:03:15 +02:00
2022-10-17 16:41:16 +02:00
2021-08-19 09:02:55 +09:00
2024-01-31 12:24:06 +00:00
2023-07-28 17:05:47 +02:00
2023-09-11 23:59:47 -04:00
2024-01-19 11:59:11 -08:00
2018-04-28 15:01:14 -07:00
2023-10-18 14:43:21 -07:00
2024-02-20 14:20:48 -08:00
2023-08-09 14:16:44 -05:00
2018-02-05 21:34:50 +01:00
2019-10-10 14:35:32 +02:00
2017-11-02 11:10:55 +01:00
2023-12-20 19:26:31 -05:00
2022-02-23 10:58:28 +01:00
2024-01-24 11:49:19 +01:00
2019-06-05 17:37:16 +02:00
2023-12-28 05:02:42 -08:00
2023-07-08 20:26:39 +02:00
2022-09-29 15:20:29 +02:00
2022-04-30 08:39:32 -06:00
2022-07-15 10:21:30 +02:00
2024-02-28 20:21:24 -08:00
2024-01-17 14:47:33 -08:00
2021-09-08 11:50:28 -07:00
2020-03-30 18:51:47 -07:00
2023-12-20 19:26:31 -05:00
2017-11-02 11:10:55 +01:00
2023-12-20 19:26:31 -05:00
2023-01-31 15:01:46 +01:00
2023-11-02 00:16:49 -04:00
2024-01-18 11:37:24 -08:00
2021-07-07 20:01:45 -07:00
2023-12-20 19:26:30 -05:00
2024-02-21 17:05:01 -08:00
2024-01-10 16:43:55 -08:00
2021-10-12 11:41:39 -03:00
2024-02-21 15:19:03 +01:00
2024-01-04 16:06:32 +01:00
2023-12-29 11:58:24 -08:00
2023-09-15 18:29:45 +08:00
2024-01-13 18:06:23 +00:00
2023-12-19 11:51:31 -07:00
2024-03-06 15:17:22 -08:00
2024-01-05 10:17:47 -08:00
2022-02-23 10:58:28 +01:00
2022-08-26 09:30:25 -07:00
2023-12-20 19:26:31 -05:00
2023-10-19 11:02:48 +02:00
2024-01-02 13:31:48 +01:00
2022-02-23 10:58:28 +01:00
2024-01-10 16:43:55 -08:00
2024-01-19 09:10:23 -08:00
2024-02-09 12:07:48 +00:00
2020-08-12 10:57:59 -07:00
2022-10-24 12:12:32 -07:00
2023-12-29 20:22:11 -08:00