diff options
| author | Kees Cook <[email protected]> | 2020-06-11 03:47:45 +0000 |
|---|---|---|
| committer | Kees Cook <[email protected]> | 2020-07-13 18:03:44 +0000 |
| commit | deefa7f3505ae2fb6a7cb75f50134b65a1dd1494 (patch) | |
| tree | 4147bf6aa14904b8e7cf4e1aaf9f39ac6a82a149 /net/core/scm.c | |
| parent | fs: Move __scm_install_fd() to __receive_fd() (diff) | |
| download | kernel-deefa7f3505ae2fb6a7cb75f50134b65a1dd1494.tar.gz kernel-deefa7f3505ae2fb6a7cb75f50134b65a1dd1494.zip | |
fs: Add receive_fd() wrapper for __receive_fd()
For both pidfd and seccomp, the __user pointer is not used. Update
__receive_fd() to make writing to ufd optional via a NULL check. However,
for the receive_fd_user() wrapper, ufd is NULL checked so an -EFAULT
can be returned to avoid changing the SCM_RIGHTS interface behavior. Add
new wrapper receive_fd() for pidfd and seccomp that does not use the ufd
argument. For the new helper, the allocated fd needs to be returned on
success. Update the existing callers to handle it.
Cc: Alexander Viro <[email protected]>
Cc: [email protected]
Reviewed-by: Sargun Dhillon <[email protected]>
Acked-by: Christian Brauner <[email protected]>
Signed-off-by: Kees Cook <[email protected]>
Diffstat (limited to 'net/core/scm.c')
| -rw-r--r-- | net/core/scm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/scm.c b/net/core/scm.c index 67c166a7820d..8156d4fb8a39 100644 --- a/net/core/scm.c +++ b/net/core/scm.c @@ -307,7 +307,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) for (i = 0; i < fdmax; i++) { err = receive_fd_user(scm->fp->fp[i], cmsg_data + i, o_flags); - if (err) + if (err < 0) break; } |
