summaryrefslogtreecommitdiffstats
path: root/io_uring/net.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2024-03-18 17:07:37 +0100
committerJens Axboe <axboe@kernel.dk>2024-04-15 16:10:25 +0200
commit6498c5c97ce73770ed227eb52b14d21c8343fd5b (patch)
tree63edf2c56cdf204a7ebca7aa1e09dba4a6fd76c3 /io_uring/net.c
parentio_uring/net: get rid of ->prep_async() for send side (diff)
downloadlinux-6498c5c97ce73770ed227eb52b14d21c8343fd5b.tar.xz
linux-6498c5c97ce73770ed227eb52b14d21c8343fd5b.zip
io_uring: kill io_msg_alloc_async_prep()
We now ONLY call io_msg_alloc_async() from inside prep handling, which is always locked. No need for this helper anymore, or the check in io_msg_alloc_async() on whether the ring is locked or not. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/net.c')
-rw-r--r--io_uring/net.c31
1 files changed, 10 insertions, 21 deletions
diff --git a/io_uring/net.c b/io_uring/net.c
index a57b15e91ad9..77f2eb79e5e0 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -129,22 +129,19 @@ static void io_netmsg_recycle(struct io_kiocb *req, unsigned int issue_flags)
}
}
-static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req,
- unsigned int issue_flags)
+static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req)
{
struct io_ring_ctx *ctx = req->ctx;
struct io_cache_entry *entry;
struct io_async_msghdr *hdr;
- if (!(issue_flags & IO_URING_F_UNLOCKED)) {
- entry = io_alloc_cache_get(&ctx->netmsg_cache);
- if (entry) {
- hdr = container_of(entry, struct io_async_msghdr, cache);
- hdr->free_iov = NULL;
- req->flags |= REQ_F_ASYNC_DATA;
- req->async_data = hdr;
- return hdr;
- }
+ entry = io_alloc_cache_get(&ctx->netmsg_cache);
+ if (entry) {
+ hdr = container_of(entry, struct io_async_msghdr, cache);
+ hdr->free_iov = NULL;
+ req->flags |= REQ_F_ASYNC_DATA;
+ req->async_data = hdr;
+ return hdr;
}
if (!io_alloc_async_data(req)) {
@@ -155,12 +152,6 @@ static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req,
return NULL;
}
-static inline struct io_async_msghdr *io_msg_alloc_async_prep(struct io_kiocb *req)
-{
- /* ->prep_async is always called from the submission context */
- return io_msg_alloc_async(req, 0);
-}
-
#ifdef CONFIG_COMPAT
static int io_compat_msg_copy_hdr(struct io_kiocb *req,
struct io_async_msghdr *iomsg,
@@ -328,8 +319,7 @@ static int io_sendmsg_prep_setup(struct io_kiocb *req, int is_msg)
struct io_async_msghdr *kmsg;
int ret;
- /* always locked for prep */
- kmsg = io_msg_alloc_async(req, 0);
+ kmsg = io_msg_alloc_async(req);
if (unlikely(!kmsg))
return -ENOMEM;
if (!is_msg)
@@ -550,8 +540,7 @@ static int io_recvmsg_prep_setup(struct io_kiocb *req)
struct io_async_msghdr *kmsg;
int ret;
- /* always locked for prep */
- kmsg = io_msg_alloc_async(req, 0);
+ kmsg = io_msg_alloc_async(req);
if (unlikely(!kmsg))
return -ENOMEM;