io_uring: ensure we return -EINVAL on unknown opcode
authorJens Axboe <axboe@kernel.dk>
Wed, 11 Dec 2019 22:55:43 +0000 (15:55 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 11 Dec 2019 23:02:32 +0000 (16:02 -0700)
commit9e3aa61ae3e01ce1ce6361a41ef725e1f4d1d2bf
tree69e498284ebc5e6887af645fc78a56498317282b
parent10d59345578a116042c1a5d737a18234aaf3e0e6
io_uring: ensure we return -EINVAL on unknown opcode

If we submit an unknown opcode and have fd == -1, io_op_needs_file()
will return true as we default to needing a file. Then when we go and
assign the file, we find the 'fd' invalid and return -EBADF. We really
should be returning -EINVAL for that case, as we normally do for
unsupported opcodes.

Change io_op_needs_file() to have the following return values:

0   - does not need a file
1   - does need a file
< 0 - error value

and use this to pass back the right value for this invalid case.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
include/uapi/linux/io_uring.h