forked from Minki/linux
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>
This commit is contained in:
parent
728f13e730
commit
62e398be27
@ -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;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user