Gality
b8addf9221
dmu_direct: avoid UAF in dmu_write_direct_done()
...
dmu_write_direct_done() passes dmu_sync_arg_t to
dmu_sync_done(), which updates the override state and
frees the completion context. The Direct I/O error path
then still dereferences dsa->dsa_tx while rolling the
dirty record back with dbuf_undirty(), resulting in a
use-after-free.
Save dsa->dsa_tx in a local variable before calling
dmu_sync_done() and use that saved tx for the error
rollback. This preserves the existing ownership model
for dsa and does not change the Direct I/O write
semantics.
Reviewed-by: Brian Atkinson <batkinson@lanl.gov >
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov >
Co-authored-by: gality369 <gality369@example.com >
Signed-off-by: ZhengYuan Huang <gality369@gmail.com >
Closes #18440
2026-04-27 10:57:52 -07:00
..
2025-12-10 10:21:29 -08:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:30 -08:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:04:58 -08:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:07:09 -08:00
2025-08-07 11:41:42 -07:00
2026-02-19 11:14:37 -08:00
2025-03-13 17:56:27 -07:00
2026-04-27 10:57:52 -07:00
2026-02-19 11:14:37 -08:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2026-02-19 11:14:37 -08:00
2025-08-06 10:36:07 -07:00
2026-04-27 10:57:52 -07:00
2025-08-07 11:41:42 -07:00
2025-12-10 10:21:29 -08:00
2026-02-17 11:54:58 -08:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:41:42 -07:00
2025-08-06 10:36:07 -07:00
2026-02-17 11:54:58 -08:00
2025-05-13 14:26:55 -07:00
2025-11-12 13:07:09 -08:00
2026-04-27 10:57:52 -07:00
2026-04-27 10:57:52 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:41:42 -07:00
2026-02-05 13:48:30 -08:00
2025-08-13 15:56:25 -04:00
2025-08-07 11:40:59 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:40:59 -07:00
2025-08-07 11:41:37 -07:00
2025-08-07 11:40:59 -07:00
2026-02-05 13:48:31 -08:00
2025-05-28 10:28:59 -07:00
2025-08-07 11:40:59 -07:00
2025-03-13 17:56:27 -07:00
2025-08-07 11:40:59 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:46 -07:00
2025-03-13 17:56:46 -07:00
2025-03-13 17:56:27 -07:00
2026-02-19 11:14:37 -08:00
2026-02-10 17:01:29 -08:00
2025-08-12 13:36:03 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2026-04-27 10:57:52 -07:00
2025-05-02 15:32:18 -07:00
2025-08-07 11:41:37 -07:00
2026-02-05 13:48:31 -08:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:06:54 -08:00
2026-04-23 15:02:10 -07:00
2025-11-12 13:04:58 -08:00
2026-02-19 11:14:37 -08:00
2026-04-23 14:54:23 -07:00
2025-08-07 11:40:59 -07:00
2026-04-23 14:54:14 -07:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:40:59 -07:00
2018-06-06 09:35:59 -07:00
2018-06-06 09:35:59 -07:00
2025-05-28 10:27:46 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:57:31 -07:00
2026-04-23 15:00:46 -07:00
2025-09-10 15:01:32 -07:00
2025-11-12 13:04:58 -08:00
2025-11-12 13:04:58 -08:00
2025-08-07 11:41:42 -07:00
2025-11-12 13:06:54 -08:00
2026-02-10 17:01:29 -08:00
2026-04-23 15:00:46 -07:00
2025-05-02 15:32:18 -07:00
2025-08-07 11:41:42 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-05-28 16:50:22 -07:00
2026-04-23 15:00:46 -07:00
2026-04-23 14:54:23 -07:00
2025-11-12 13:06:54 -08:00
2025-05-02 15:32:18 -07:00
2025-11-12 13:06:54 -08:00
2026-04-23 14:54:23 -07:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2026-02-05 13:48:31 -08:00
2025-05-27 20:04:37 -04:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-03-13 17:56:27 -07:00
2025-06-10 14:53:10 -07:00
2025-08-07 11:41:42 -07:00
2025-09-09 17:03:27 -07:00
2025-03-13 17:56:27 -07:00
2025-12-10 10:21:29 -08:00
2025-09-15 12:43:34 -07:00
2025-04-18 09:22:16 -04:00
2025-12-10 10:21:29 -08:00
2025-11-12 13:04:58 -08:00
2025-03-13 17:56:27 -07:00
2026-04-23 15:02:14 -07:00
2025-08-08 16:43:20 -07:00
2025-03-13 17:56:27 -07:00
2026-02-05 13:48:31 -08:00
2025-03-13 17:56:27 -07:00
2025-03-18 16:04:22 -07:00
2025-08-07 11:41:25 -07:00
2025-08-08 16:43:09 -07:00
2025-08-08 16:43:09 -07:00
2025-04-03 10:35:22 -07:00
2025-08-14 08:50:17 -07:00
2025-08-07 11:40:59 -07:00
2026-02-19 11:14:37 -08:00
2025-11-12 13:06:54 -08:00
2026-04-23 15:00:46 -07:00
2025-03-13 17:56:27 -07:00
2025-08-07 11:41:42 -07:00
2025-08-07 11:41:42 -07:00
2025-11-12 13:06:54 -08:00