summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-02-21 16:19:37 -0700
committerJens Axboe <axboe@kernel.dk>2021-02-23 20:33:31 -0700
commit62e398be275a6c6efefe117b8960ae4e40e047cd (patch)
treec849f88295c2657dbd849caf091639dd60ce1bea
parent728f13e730093d0b3a1317d2ada83c2538941f34 (diff)
downloadlinux-stable-62e398be275a6c6efefe117b8960ae4e40e047cd.tar.gz
linux-stable-62e398be275a6c6efefe117b8960ae4e40e047cd.tar.bz2
linux-stable-62e398be275a6c6efefe117b8960ae4e40e047cd.zip
io_uring: cleanup ->user usage
At this point we're only using it for memory accounting, so there's no need to have an extra ->limit_mem - we can just set ->user if we do the accounting, or leave it at NULL if we don't. Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--fs/io_uring.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 49a636d291cf..e62ad6bde569 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -334,7 +334,6 @@ struct io_ring_ctx {
struct {
unsigned int flags;
unsigned int compat: 1;
- unsigned int limit_mem: 1;
unsigned int cq_overflow_flushed: 1;
unsigned int drain_next: 1;
unsigned int eventfd_async: 1;
@@ -7230,7 +7229,7 @@ static int __io_sqe_files_scm(struct io_ring_ctx *ctx, int nr, int offset)
skb->sk = sk;
nr_files = 0;
- fpl->user = get_uid(ctx->user);
+ fpl->user = get_uid(current_user());
for (i = 0; i < nr; i++) {
struct file *file = io_file_from_index(ctx, i + offset);
@@ -7942,7 +7941,7 @@ static inline int __io_account_mem(struct user_struct *user,
static void io_unaccount_mem(struct io_ring_ctx *ctx, unsigned long nr_pages)
{
- if (ctx->limit_mem)
+ if (ctx->user)
__io_unaccount_mem(ctx->user, nr_pages);
if (ctx->mm_account)
@@ -7953,7 +7952,7 @@ static int io_account_mem(struct io_ring_ctx *ctx, unsigned long nr_pages)
{
int ret;
- if (ctx->limit_mem) {
+ if (ctx->user) {
ret = __io_account_mem(ctx->user, nr_pages);
if (ret)
return ret;
@@ -9370,7 +9369,6 @@ static struct file *io_uring_get_file(struct io_ring_ctx *ctx)
static int io_uring_create(unsigned entries, struct io_uring_params *p,
struct io_uring_params __user *params)
{
- struct user_struct *user = NULL;
struct io_ring_ctx *ctx;
struct file *file;
int ret;
@@ -9412,16 +9410,12 @@ static int io_uring_create(unsigned entries, struct io_uring_params *p,
p->cq_entries = 2 * p->sq_entries;
}
- user = get_uid(current_user());
-
ctx = io_ring_ctx_alloc(p);
- if (!ctx) {
- free_uid(user);
+ if (!ctx)
return -ENOMEM;
- }
ctx->compat = in_compat_syscall();
- ctx->limit_mem = !capable(CAP_IPC_LOCK);
- ctx->user = user;
+ if (!capable(CAP_IPC_LOCK))
+ ctx->user = get_uid(current_user());
ctx->sqo_task = current;
/*