summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2022-11-04 10:59:42 +0000
committerJens Axboe <axboe@kernel.dk>2022-11-21 07:38:31 -0700
commitfc1dd0d4fa523916529ddf7c56d7b866312c4262 (patch)
treeeb6d4c0b1ddc18e1e015bae624fcb751ae93db4b
parent5bc8e8884b4e9579ca57e33d42d60090b7288050 (diff)
downloadlinux-fc1dd0d4fa523916529ddf7c56d7b866312c4262.tar.gz
io_uring/net: preset notif tw handler
We're going to have multiple notification tw functions. In preparation for future changes default the tw callback in advance so later we can replace it with other versions. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/7acdbea5e20eadd844513320cd454af14ba50f64.1667557923.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--io_uring/notif.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/io_uring/notif.c b/io_uring/notif.c
index 59dafc42b8e0..6afb58b94297 100644
--- a/io_uring/notif.c
+++ b/io_uring/notif.c
@@ -39,10 +39,8 @@ static void io_uring_tx_zerocopy_callback(struct sk_buff *skb,
WRITE_ONCE(nd->zc_copied, true);
}
- if (refcount_dec_and_test(&uarg->refcnt)) {
- notif->io_task_work.func = __io_notif_complete_tw;
+ if (refcount_dec_and_test(&uarg->refcnt))
io_req_task_work_add(notif);
- }
}
struct io_kiocb *io_alloc_notif(struct io_ring_ctx *ctx)
@@ -60,6 +58,7 @@ struct io_kiocb *io_alloc_notif(struct io_ring_ctx *ctx)
notif->task = current;
io_get_task_refs(1);
notif->rsrc_node = NULL;
+ notif->io_task_work.func = __io_notif_complete_tw;
nd = io_notif_to_data(notif);
nd->account_pages = 0;
@@ -76,8 +75,6 @@ void io_notif_flush(struct io_kiocb *notif)
struct io_notif_data *nd = io_notif_to_data(notif);
/* drop slot's master ref */
- if (refcount_dec_and_test(&nd->uarg.refcnt)) {
- notif->io_task_work.func = __io_notif_complete_tw;
+ if (refcount_dec_and_test(&nd->uarg.refcnt))
io_req_task_work_add(notif);
- }
}