* [PATCH 0/2] Two minor 5.11 io_uring fixes @ 2020-12-17 15:21 Jens Axboe 2020-12-17 15:21 ` [PATCH 1/2] io_uring: break links on shutdown failure Jens Axboe 2020-12-17 15:21 ` [PATCH 2/2] io_uring: hold mmap_sem for mm->locked_vm manipulation Jens Axboe 0 siblings, 2 replies; 3+ messages in thread From: Jens Axboe @ 2020-12-17 15:21 UTC (permalink / raw) To: io-uring Hi, 1) Make sure we break links if a shutdown command fails 2) Play it safe and grab mmap_sem when modifying mm->locked_vm -- Jens Axboe ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] io_uring: break links on shutdown failure 2020-12-17 15:21 [PATCH 0/2] Two minor 5.11 io_uring fixes Jens Axboe @ 2020-12-17 15:21 ` Jens Axboe 2020-12-17 15:21 ` [PATCH 2/2] io_uring: hold mmap_sem for mm->locked_vm manipulation Jens Axboe 1 sibling, 0 replies; 3+ messages in thread From: Jens Axboe @ 2020-12-17 15:21 UTC (permalink / raw) To: io-uring; +Cc: Jens Axboe Ensure that the return value of __sys_shutdown_sock() is used to potentially break links to the request, if we fail. Fixes: 36f4fa6886a8 ("io_uring: add support for shutdown(2)") Signed-off-by: Jens Axboe <axboe@kernel.dk> --- fs/io_uring.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/io_uring.c b/fs/io_uring.c index 6f9392c35eef..6a4560c9ed9a 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -3784,6 +3784,8 @@ static int io_shutdown(struct io_kiocb *req, bool force_nonblock) return -ENOTSOCK; ret = __sys_shutdown_sock(sock, req->shutdown.how); + if (ret < 0) + req_set_fail_links(req); io_req_complete(req, ret); return 0; #else -- 2.29.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] io_uring: hold mmap_sem for mm->locked_vm manipulation 2020-12-17 15:21 [PATCH 0/2] Two minor 5.11 io_uring fixes Jens Axboe 2020-12-17 15:21 ` [PATCH 1/2] io_uring: break links on shutdown failure Jens Axboe @ 2020-12-17 15:21 ` Jens Axboe 1 sibling, 0 replies; 3+ messages in thread From: Jens Axboe @ 2020-12-17 15:21 UTC (permalink / raw) To: io-uring; +Cc: Jens Axboe The kernel doesn't seem to have clear rules around this, but various spots are using the mmap_sem to serialize access to modifying the locked_vm count. Play it safe and lock the mm for write when accounting or unaccounting locked memory. Signed-off-by: Jens Axboe <axboe@kernel.dk> --- fs/io_uring.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 6a4560c9ed9a..2d07d35e7262 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -8157,10 +8157,13 @@ static void io_unaccount_mem(struct io_ring_ctx *ctx, unsigned long nr_pages, __io_unaccount_mem(ctx->user, nr_pages); if (ctx->mm_account) { - if (acct == ACCT_LOCKED) + if (acct == ACCT_LOCKED) { + mmap_write_lock(ctx->mm_account); ctx->mm_account->locked_vm -= nr_pages; - else if (acct == ACCT_PINNED) + mmap_write_unlock(ctx->mm_account); + }else if (acct == ACCT_PINNED) { atomic64_sub(nr_pages, &ctx->mm_account->pinned_vm); + } } } @@ -8176,10 +8179,13 @@ static int io_account_mem(struct io_ring_ctx *ctx, unsigned long nr_pages, } if (ctx->mm_account) { - if (acct == ACCT_LOCKED) + if (acct == ACCT_LOCKED) { + mmap_write_lock(ctx->mm_account); ctx->mm_account->locked_vm += nr_pages; - else if (acct == ACCT_PINNED) + mmap_write_unlock(ctx->mm_account); + } else if (acct == ACCT_PINNED) { atomic64_add(nr_pages, &ctx->mm_account->pinned_vm); + } } return 0; -- 2.29.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-12-17 15:21 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-12-17 15:21 [PATCH 0/2] Two minor 5.11 io_uring fixes Jens Axboe 2020-12-17 15:21 ` [PATCH 1/2] io_uring: break links on shutdown failure Jens Axboe 2020-12-17 15:21 ` [PATCH 2/2] io_uring: hold mmap_sem for mm->locked_vm manipulation Jens Axboe
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.