Onur Özkan
59cf3a5bda
rust: sync: add SRCU abstraction
...
Add a Rust abstraction for sleepable RCU (SRCU), backed by C srcu_struct.
Provide FFI helpers and a safe wrapper with a guard-based API for read-side
critical sections.
Cleanup is handled via `PinnedDrop`. It first checks for active read-side
sections and emits a warning if any guards were leaked. In that case, it
waits in `synchronize_srcu()` rather than risking a UAF by freeing the
`srcu_struct` that is still reachable from the C side. It then uses
`srcu_barrier()` to drain pending callbacks before finally calling
`cleanup_srcu_struct()`.
Signed-off-by: Onur Özkan <work@onurozkan.dev >
Reviewed-by: Gary Guo <gary@garyguo.net >
Reviewed-by: Alice Ryhl <aliceryhl@google.com >
Reviewed-by: Boqun Feng <boqun@kernel.org >
Signed-off-by: Paul E. McKenney <paulmck@kernel.org >
2026-07-15 15:34:26 -07:00
..
2026-06-15 12:41:17 +05:30
2026-05-31 19:45:06 -06:00
2026-02-11 17:43:59 -08:00
2025-12-22 17:30:24 +01:00
2026-06-02 22:51:16 +02:00
2025-11-05 00:05:38 +01:00
2026-03-23 21:41:47 +01:00
2026-03-23 20:29:28 +01:00
2026-06-15 12:41:17 +05:30
2026-01-22 09:19:30 +01:00
2026-03-03 20:33:26 +01:00
2026-04-14 12:36:25 -07:00
2026-04-05 13:53:15 -07:00
2026-06-10 09:07:13 +02:00
2026-06-10 09:07:13 +02:00
2026-05-27 16:24:23 +02:00
2026-06-05 10:16:47 +02:00
2025-11-03 14:40:45 +01:00
2026-07-15 15:34:26 -07:00
2026-03-23 08:31:00 +01:00
2026-05-27 16:24:59 +02:00
2025-07-23 02:05:58 +02:00
2025-10-27 20:27:05 +01:00
2026-05-20 17:34:17 +02:00
2026-05-27 16:27:28 +02:00
2026-06-17 01:32:56 +02:00
2026-06-08 02:30:33 +02:00
2026-01-18 20:40:11 +01:00
2025-09-02 05:23:56 -06:00
2026-01-30 05:18:17 +01:00
2026-06-10 09:07:13 +02:00
2026-04-03 11:57:35 +02:00
2026-01-15 09:26:49 +01:00
2025-09-14 23:58:45 +02:00
2026-06-15 12:41:17 +05:30
2026-01-27 11:21:23 +05:30
2025-10-04 16:26:32 -07:00
2026-01-19 15:02:46 +01:00
2025-12-29 14:09:18 +01:00
2026-05-27 16:22:42 +02:00
2026-05-29 01:06:10 +02:00
2026-06-15 12:41:17 +05:30
2026-05-29 00:38:54 +02:00
2026-05-28 11:08:27 +02:00
2026-01-07 19:56:00 +01:00
2025-11-17 00:53:47 +01:00
2026-05-20 00:47:24 +02:00
2025-09-06 13:27:20 +02:00
2025-07-23 02:05:58 +02:00
2024-11-20 13:32:42 -05:00
2025-07-23 02:05:58 +02:00
2026-03-23 21:41:47 +01:00
2026-06-15 12:41:17 +05:30
2025-12-02 14:17:09 -05:00
2026-02-02 08:09:11 +01:00
2026-06-09 04:13:21 +02:00
2026-03-23 20:29:28 +01:00
2026-03-17 20:04:11 +01:00
2026-06-10 09:07:13 +02:00
2025-09-06 13:27:20 +02:00
2025-08-12 20:22:09 +02:00
2024-11-20 13:32:42 -05:00
2026-06-09 04:13:07 +02:00
2026-06-08 02:30:33 +02:00
2026-06-09 04:12:51 +02:00
2026-03-27 12:15:47 +01:00
2025-12-23 11:23:15 -08:00
2026-05-23 13:47:32 +02:00
2025-09-13 16:55:15 -07:00
2026-06-04 16:42:34 +00:00
2023-12-15 09:35:50 +00:00
2025-11-19 00:22:24 +01:00
2025-09-16 09:26:59 +02:00
2026-05-25 09:40:52 +05:30
2026-06-19 10:14:34 -07:00
2026-05-27 16:23:10 +02:00
2025-08-19 13:08:41 +02:00
2026-06-08 23:28:24 +02:00
2026-06-17 00:32:42 +02:00
2026-01-30 05:47:05 +01:00
2025-08-21 16:58:07 +02:00
2026-04-08 10:44:11 +02:00
2026-01-20 18:49:58 +01:00
2026-02-10 11:53:01 -08:00
2026-03-24 13:08:21 +00:00
2025-08-03 13:49:10 -07:00
2026-02-02 08:10:48 +01:00
2025-12-18 17:25:45 +01:00
2025-09-19 09:40:46 +02:00
2026-01-29 15:32:40 +01:00
2026-04-07 12:57:50 +02:00
2025-12-28 12:43:56 +01:00
2025-05-12 00:20:25 +02:00
2026-06-10 09:07:13 +02:00
2026-07-15 15:34:26 -07:00
2026-04-24 13:23:50 -07:00
2026-03-23 08:29:48 +01:00
2024-11-04 16:21:44 -05:00
2026-04-07 10:00:24 +02:00
2026-05-27 16:24:59 +02:00
2026-04-24 13:23:50 -07:00
2026-05-27 16:23:51 +02:00
2026-03-26 15:45:34 +00:00
2026-06-10 09:07:13 +02:00