io_uring_enter(): don't leave f.flags uninitialized

simplifies logics on cleanup, as well...

Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro
2022-05-11 20:30:20 -04:00
parent 3123109284
commit 4329490a78

View File

@@ -10961,13 +10961,13 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
return -EINVAL; return -EINVAL;
fd = array_index_nospec(fd, IO_RINGFD_REG_MAX); fd = array_index_nospec(fd, IO_RINGFD_REG_MAX);
f.file = tctx->registered_rings[fd]; f.file = tctx->registered_rings[fd];
if (unlikely(!f.file)) f.flags = 0;
return -EBADF;
} else { } else {
f = fdget(fd); f = fdget(fd);
}
if (unlikely(!f.file)) if (unlikely(!f.file))
return -EBADF; return -EBADF;
}
ret = -EOPNOTSUPP; ret = -EOPNOTSUPP;
if (unlikely(f.file->f_op != &io_uring_fops)) if (unlikely(f.file->f_op != &io_uring_fops))
@@ -11041,7 +11041,6 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned int, fd, u32, to_submit,
out: out:
percpu_ref_put(&ctx->refs); percpu_ref_put(&ctx->refs);
out_fput: out_fput:
if (!(flags & IORING_ENTER_REGISTERED_RING))
fdput(f); fdput(f);
return submitted ? submitted : ret; return submitted ? submitted : ret;
} }