Message ID | 1614597960-32681-1-git-send-email-wangqing@vivo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fs: Return -EFAULT if copy_to_user() fails | expand |
On Mon, Mar 01, 2021 at 07:26:00PM +0800, Wang Qing wrote: > The copy_to_user() function returns the number of bytes remaining to be > copied, but we want to return -EFAULT if the copy doesn't complete. ... which is done by the only caller. if (set_fd_set(n, inp, fds.res_in) || set_fd_set(n, outp, fds.res_out) || set_fd_set(n, exp, fds.res_ex)) ret = -EFAULT;
diff --git a/fs/select.c b/fs/select.c index 37aaa83..93cd35b --- a/fs/select.c +++ b/fs/select.c @@ -400,7 +400,7 @@ static inline unsigned long __must_check set_fd_set(unsigned long nr, void __user *ufdset, unsigned long *fdset) { if (ufdset) - return __copy_to_user(ufdset, fdset, FDS_BYTES(nr)); + return __copy_to_user(ufdset, fdset, FDS_BYTES(nr)) ? -EFAULT : 0; return 0; }
The copy_to_user() function returns the number of bytes remaining to be copied, but we want to return -EFAULT if the copy doesn't complete. Signed-off-by: Wang Qing <wangqing@vivo.com> --- fs/select.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)