summaryrefslogtreecommitdiff
path: root/io_uring/cancel.h
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2026-02-16 14:16:27 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-02-26 15:01:27 -0800
commit67f6714c62b7ea153ceead86f58d135ebc88c9e0 (patch)
tree5a745a5381a789002ff817ad6daf79a76a94c983 /io_uring/cancel.h
parent16ac960300230f6ae7a77015074286ac2312f9ee (diff)
io_uring/cancel: de-unionize file and user_data in struct io_cancel_data
[ Upstream commit 22dbb0987bd1e0ec3b1e4ad20756a98f99aa4a08 ] By having them share the same space in struct io_cancel_data, it ends up disallowing IORING_ASYNC_CANCEL_FD|IORING_ASYNC_CANCEL_USERDATA from working. Eg you cannot match on both a file and user_data for cancelation purposes. This obviously isn't a common use case as nobody has reported this, but it does result in -ENOENT potentially being returned when trying to match on both, rather than actually doing what the API says it would. Fixes: 4bf94615b888 ("io_uring: allow IORING_OP_ASYNC_CANCEL with 'fd' key") Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'io_uring/cancel.h')
-rw-r--r--io_uring/cancel.h6
1 files changed, 2 insertions, 4 deletions
diff --git a/io_uring/cancel.h b/io_uring/cancel.h
index 6783961ede1b..1b201a094303 100644
--- a/io_uring/cancel.h
+++ b/io_uring/cancel.h
@@ -6,10 +6,8 @@
struct io_cancel_data {
struct io_ring_ctx *ctx;
- union {
- u64 data;
- struct file *file;
- };
+ u64 data;
+ struct file *file;
u8 opcode;
u32 flags;
int seq;