diff options
author | Jens Axboe <axboe@kernel.dk> | 2022-12-07 09:23:06 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-12-08 07:05:42 -0700 |
commit | 73b9320234c0ad1b5e6f576abb796221eb088c64 (patch) | |
tree | 82c16dccade02688fab59351c5269770357e609f | |
parent | 1265ae6b60afb035f4a1a0594a928902238c42f4 (diff) |
eventpoll: ensure we pass back -EBADF for a bad file descriptorepoll-min_ts-2022-12-08
A previous commit moved file checking earlier in epoll_ctl(), and as a
result, we now have error == -EINVAL going into the test case for
whether or not the passed in target file is valid or not. This should be
-EBADF as per earlier, assign it correctly, otherwise epoll_ctl02 from
LTP correctly identifies this bad return value:
epoll_ctl02.c:87: TFAIL: epoll_clt(...) if fd is an invalid fd expected EBADF: EINVAL (22)
Fixes: 3fe64a3a96d4 ("eventpoll: move file checking earlier for epoll_ctl()")
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Anders Roxell <anders.roxell@linaro.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | fs/eventpoll.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/eventpoll.c b/fs/eventpoll.c index ec7ffce8265a..de9c551e1993 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -2195,6 +2195,7 @@ int do_epoll_ctl(int epfd, int op, int fd, struct epoll_event *epds, } /* Get the "struct file *" for the target file */ + error = -EBADF; tf = fdget(fd); if (!tf.file) goto error_fput; |