io_uring: statx must grab the file table for valid fd
authorJens Axboe <axboe@kernel.dk>
Mon, 27 Apr 2020 16:41:22 +0000 (10:41 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 May 2020 06:16:50 +0000 (08:16 +0200)
commit93588be6431948dbe7c2ec1738ecfdc5c7b0c666
treeb2357e0835c67d7b0f895e3eb41ff41ba6b0aaf0
parent015e9f0edf68cd1234d444b43623490c28d6ee6e
io_uring: statx must grab the file table for valid fd

commit 5b0bbee4732cbd58aa98213d4c11a366356bba3d upstream.

Clay reports that OP_STATX fails for a test case with a valid fd
and empty path:

 -- Test 0: statx:fd 3: SUCCEED, file mode 100755
 -- Test 1: statx:path ./uring_statx: SUCCEED, file mode 100755
 -- Test 2: io_uring_statx:fd 3: FAIL, errno 9: Bad file descriptor
 -- Test 3: io_uring_statx:path ./uring_statx: SUCCEED, file mode 100755

This is due to statx not grabbing the process file table, hence we can't
lookup the fd in async context. If the fd is valid, ensure that we grab
the file table so we can grab the file from async context.

Cc: stable@vger.kernel.org # v5.6
Reported-by: Clay Harris <bugs@claycon.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/io_uring.c