Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seccomp notifier backport to 5.8 #3

Merged
merged 17 commits into from
Aug 12, 2020

Commits on Aug 11, 2020

  1. seccomp: Add find_notification helper

    This adds a helper which can iterate through a seccomp_filter to
    find a notification matching an ID. It removes several replicated
    chunks of code.
    
    Signed-off-by: Sargun Dhillon <sargun@sargun.me>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Reviewed-by: Tycho Andersen <tycho@tycho.ws>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: Kees Cook <keescook@google.com>,
    Cc: Jann Horn <jannh@google.com>,
    Cc: Robert Sesek <rsesek@google.com>,
    Cc: Chris Palmer <palmer@google.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Tycho Andersen <tycho@tycho.ws>
    Link: https://lore.kernel.org/r/20200601112532.150158-1-sargun@sargun.me
    Signed-off-by: Kees Cook <keescook@chromium.org>
    sargun authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    6448aa0 View commit details
    Browse the repository at this point in the history
  2. seccomp: rename "usage" to "refs" and document

    Naming the lifetime counter of a seccomp filter "usage" suggests a
    little too strongly that its about tasks that are using this filter
    while it also tracks other references such as the user notifier or
    ptrace. This also updates the documentation to note this fact.
    
    We'll be introducing an actual usage counter in a follow-up patch.
    
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jann Horn <jannh@google.com>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Jeffrey Vander Stoep <jeffv@google.com>
    Cc: Linux Containers <containers@lists.linux-foundation.org>
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Link: https://lore.kernel.org/r/20200531115031.391515-1-christian.brauner@ubuntu.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Christian Brauner authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    8845106 View commit details
    Browse the repository at this point in the history
  3. seccomp: release filter after task is fully dead

    The seccomp filter used to be released in free_task() which is called
    asynchronously via call_rcu() and assorted mechanisms. Since we need
    to inform tasks waiting on the seccomp notifier when a filter goes empty
    we will notify them as soon as a task has been marked fully dead in
    release_task(). To not split seccomp cleanup into two parts, move
    filter release out of free_task() and into release_task() after we've
    unhashed struct task from struct pid, exited signals, and unlinked it
    from the threadgroups' thread list. We'll put the empty filter
    notification infrastructure into it in a follow up patch.
    
    This also renames put_seccomp_filter() to seccomp_filter_release() which
    is a more descriptive name of what we're doing here especially once
    we've added the empty filter notification mechanism in there.
    
    We're also NULL-ing the task's filter tree entrypoint which seems
    cleaner than leaving a dangling pointer in there. Note that this shouldn't
    need any memory barriers since we're calling this when the task is in
    release_task() which means it's EXIT_DEAD. So it can't modify its seccomp
    filters anymore. You can also see this from the point where we're calling
    seccomp_filter_release(). It's after __exit_signal() and at this point,
    tsk->sighand will already have been NULLed which is required for
    thread-sync and filter installation alike.
    
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jann Horn <jannh@google.com>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Jeffrey Vander Stoep <jeffv@google.com>
    Cc: Linux Containers <containers@lists.linux-foundation.org>
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Link: https://lore.kernel.org/r/20200531115031.391515-2-christian.brauner@ubuntu.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Christian Brauner authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    17aed81 View commit details
    Browse the repository at this point in the history
  4. seccomp: Lift wait_queue into struct seccomp_filter

    Lift the wait_queue from struct notification into struct seccomp_filter.
    This is cleaner overall and lets us avoid having to take the notifier
    mutex in the future for EPOLLHUP notifications since we need to neither
    read nor modify the notifier specific aspects of the seccomp filter. In
    the exit path I'd very much like to avoid having to take the notifier mutex
    for each filter in the task's filter hierarchy.
    
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jann Horn <jannh@google.com>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Jeffrey Vander Stoep <jeffv@google.com>
    Cc: Linux Containers <containers@lists.linux-foundation.org>
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Christian Brauner authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    ae5bace View commit details
    Browse the repository at this point in the history
  5. seccomp: notify about unused filter

    We've been making heavy use of the seccomp notifier to intercept and
    handle certain syscalls for containers. This patch allows a syscall
    supervisor listening on a given notifier to be notified when a seccomp
    filter has become unused.
    
    A container is often managed by a singleton supervisor process the
    so-called "monitor". This monitor process has an event loop which has
    various event handlers registered. If the user specified a seccomp
    profile that included a notifier for various syscalls then we also
    register a seccomp notify even handler. For any container using a
    separate pid namespace the lifecycle of the seccomp notifier is bound to
    the init process of the pid namespace, i.e. when the init process exits
    the filter must be unused.
    
    If a new process attaches to a container we force it to assume a seccomp
    profile. This can either be the same seccomp profile as the container
    was started with or a modified one. If the attaching process makes use
    of the seccomp notifier we will register a new seccomp notifier handler
    in the monitor's event loop. However, when the attaching process exits
    we can't simply delete the handler since other child processes could've
    been created (daemons spawned etc.) that have inherited the seccomp
    filter and so we need to keep the seccomp notifier fd alive in the event
    loop. But this is problematic since we don't get a notification when the
    seccomp filter has become unused and so we currently never remove the
    seccomp notifier fd from the event loop and just keep accumulating fds
    in the event loop. We've had this issue for a while but it has recently
    become more pressing as more and larger users make use of this.
    
    To fix this, we introduce a new "users" reference counter that tracks any
    tasks and dependent filters making use of a filter. When a notifier is
    registered waiting tasks will be notified that the filter is now empty
    by receiving a (E)POLLHUP event.
    
    The concept in this patch introduces is the same as for signal_struct,
    i.e. reference counting for life-cycle management is decoupled from
    reference counting taks using the object. There's probably some trickery
    possible but the second counter is just the correct way of doing this
    IMHO and has precedence.
    
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jann Horn <jannh@google.com>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Jeffrey Vander Stoep <jeffv@google.com>
    Cc: Linux Containers <containers@lists.linux-foundation.org>
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Link: https://lore.kernel.org/r/20200531115031.391515-3-christian.brauner@ubuntu.com
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Christian Brauner authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    50baf84 View commit details
    Browse the repository at this point in the history
  6. seccomp: Fix ioctl number for SECCOMP_IOCTL_NOTIF_ID_VALID

    When SECCOMP_IOCTL_NOTIF_ID_VALID was first introduced it had the wrong
    direction flag set. While this isn't a big deal as nothing currently
    enforces these bits in the kernel, it should be defined correctly. Fix
    the define and provide support for the old command until it is no longer
    needed for backward compatibility.
    
    Fixes: 6a21cc5 ("seccomp: add a return code to trap to userspace")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    873932a View commit details
    Browse the repository at this point in the history
  7. seccomp: Introduce addfd ioctl to seccomp user notifier

    The current SECCOMP_RET_USER_NOTIF API allows for syscall supervision over
    an fd. It is often used in settings where a supervising task emulates
    syscalls on behalf of a supervised task in userspace, either to further
    restrict the supervisee's syscall abilities or to circumvent kernel
    enforced restrictions the supervisor deems safe to lift (e.g. actually
    performing a mount(2) for an unprivileged container).
    
    While SECCOMP_RET_USER_NOTIF allows for the interception of any syscall,
    only a certain subset of syscalls could be correctly emulated. Over the
    last few development cycles, the set of syscalls which can't be emulated
    has been reduced due to the addition of pidfd_getfd(2). With this we are
    now able to, for example, intercept syscalls that require the supervisor
    to operate on file descriptors of the supervisee such as connect(2).
    
    However, syscalls that cause new file descriptors to be installed can not
    currently be correctly emulated since there is no way for the supervisor
    to inject file descriptors into the supervisee. This patch adds a
    new addfd ioctl to remove this restriction by allowing the supervisor to
    install file descriptors into the intercepted task. By implementing this
    feature via seccomp the supervisor effectively instructs the supervisee
    to install a set of file descriptors into its own file descriptor table
    during the intercepted syscall. This way it is possible to intercept
    syscalls such as open() or accept(), and install (or replace, like
    dup2(2)) the supervisor's resulting fd into the supervisee. One
    replacement use-case would be to redirect the stdout and stderr of a
    supervisee into log file descriptors opened by the supervisor.
    
    The ioctl handling is based on the discussions[1] of how Extensible
    Arguments should interact with ioctls. Instead of building size into
    the addfd structure, make it a function of the ioctl command (which
    is how sizes are normally passed to ioctls). To support forward and
    backward compatibility, just mask out the direction and size, and match
    everything. The size (and any future direction) checks are done along
    with copy_struct_from_user() logic.
    
    As a note, the seccomp_notif_addfd structure is laid out based on 8-byte
    alignment without requiring packing as there have been packing issues
    with uapi highlighted before[2][3]. Although we could overload the
    newfd field and use -1 to indicate that it is not to be used, doing
    so requires changing the size of the fd field, and introduces struct
    packing complexity.
    
    [1]: https://lore.kernel.org/lkml/87o8w9bcaf.fsf@mid.deneb.enyo.de/
    [2]: https://lore.kernel.org/lkml/a328b91d-fd8f-4f27-b3c2-91a9c45f18c0@rasmusvillemoes.dk/
    [3]: https://lore.kernel.org/lkml/20200612104629.GA15814@ircssh-2.c.rugged-nimbus-611.internal
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Jann Horn <jannh@google.com>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-api@vger.kernel.org
    Suggested-by: Matt Denton <mpdenton@google.com>
    Link: https://lore.kernel.org/r/20200603011044.7972-4-sargun@sargun.me
    Signed-off-by: Sargun Dhillon <sargun@sargun.me>
    Reviewed-by: Will Drewry <wad@chromium.org>
    Co-developed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    sargun authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    0c32947 View commit details
    Browse the repository at this point in the history
  8. selftests/seccomp: Test SECCOMP_IOCTL_NOTIF_ADDFD

    Test whether we can add file descriptors in response to notifications.
    This injects the file descriptors via notifications, and then uses kcmp
    to determine whether or not it has been successful.
    
    It also includes some basic sanity checking for arguments.
    
    Signed-off-by: Sargun Dhillon <sargun@sargun.me>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Chris Palmer <palmer@google.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Robert Sesek <rsesek@google.com>
    Cc: Tycho Andersen <tycho@tycho.ws>
    Cc: Matt Denton <mpdenton@google.com>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Link: https://lore.kernel.org/r/20200603011044.7972-5-sargun@sargun.me
    Co-developed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    sargun authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    82be3d1 View commit details
    Browse the repository at this point in the history
  9. Merge tag 'close-range-v5.9' of git://git.kernel.org/pub/scm/linux/ke…

    …rnel/git/brauner/linux
    
    Pull close_range() implementation from Christian Brauner:
     "This adds the close_range() syscall. It allows to efficiently close a
      range of file descriptors up to all file descriptors of a calling
      task.
    
      This is coordinated with the FreeBSD folks which have copied our
      version of this syscall and in the meantime have already merged it in
      April 2019:
    
        https://reviews.freebsd.org/D21627
        https://svnweb.freebsd.org/base?view=revision&revision=359836
    
      The syscall originally came up in a discussion around the new mount
      API and making new file descriptor types cloexec by default. During
      this discussion, Al suggested the close_range() syscall.
    
      First, it helps to close all file descriptors of an exec()ing task.
      This can be done safely via (quoting Al's example from [1] verbatim):
    
            /* that exec is sensitive */
            unshare(CLONE_FILES);
            /* we don't want anything past stderr here */
            close_range(3, ~0U);
            execve(....);
    
      The code snippet above is one way of working around the problem that
      file descriptors are not cloexec by default. This is aggravated by the
      fact that we can't just switch them over without massively regressing
      userspace. For a whole class of programs having an in-kernel method of
      closing all file descriptors is very helpful (e.g. demons, service
      managers, programming language standard libraries, container managers
      etc.).
    
      Second, it allows userspace to avoid implementing closing all file
      descriptors by parsing through /proc/<pid>/fd/* and calling close() on
      each file descriptor and other hacks. From looking at various
      large(ish) userspace code bases this or similar patterns are very
      common in service managers, container runtimes, and programming
      language runtimes/standard libraries such as Python or Rust.
    
      In addition, the syscall will also work for tasks that do not have
      procfs mounted and on kernels that do not have procfs support compiled
      in. In such situations the only way to make sure that all file
      descriptors are closed is to call close() on each file descriptor up
      to UINT_MAX or RLIMIT_NOFILE, OPEN_MAX trickery.
    
      Based on Linus' suggestion close_range() also comes with a new flag
      CLOSE_RANGE_UNSHARE to more elegantly handle file descriptor dropping
      right before exec. This would usually be expressed in the sequence:
    
            unshare(CLONE_FILES);
            close_range(3, ~0U);
    
      as pointed out by Linus it might be desirable to have this be a part
      of close_range() itself under a new flag CLOSE_RANGE_UNSHARE which
      gets especially handy when we're closing all file descriptors above a
      certain threshold.
    
      Test-suite as always included"
    
    * tag 'close-range-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
      tests: add CLOSE_RANGE_UNSHARE tests
      close_range: add CLOSE_RANGE_UNSHARE
      tests: add close_range() tests
      arch: wire-up close_range()
      open: add close_range()
    torvalds authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    4691968 View commit details
    Browse the repository at this point in the history
  10. net/compat: Add missing sock updates for SCM_RIGHTS

    Add missed sock updates to compat path via a new helper, which will be
    used more in coming patches. (The net/core/scm.c code is left as-is here
    to assist with -stable backports for the compat path.)
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 48a87cc ("net: netprio: fd passed in SCM_RIGHTS datagram not set correctly")
    Fixes: d842950 ("net: net_cls: fd passed in SCM_RIGHTS datagram not set correctly")
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    acc05d3 View commit details
    Browse the repository at this point in the history
  11. pidfd: Add missing sock updates for pidfd_getfd()

    The sock counting (sock_update_netprioidx() and sock_update_classid())
    was missing from pidfd's implementation of received fd installation. Add
    a call to the new __receive_sock() helper.
    
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: stable@vger.kernel.org
    Fixes: 8649c32 ("pid: Implement pidfd_getfd syscall")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    49369b3 View commit details
    Browse the repository at this point in the history
  12. net/scm: Regularize compat handling of scm_detach_fds()

    Duplicate the cleanups from commit 2618d53 ("net/scm: cleanup
    scm_detach_fds") into the compat code.
    
    Replace open-coded __receive_sock() with a call to the helper.
    
    Move the check added in commit 1f466e1 ("net: cleanly handle kernel
    vs user buffers for ->msg_control") to before the compat call, even
    though it should be impossible for an in-kernel call to also be compat.
    
    Correct the int "flags" argument to unsigned int to match fd_install()
    and similar APIs.
    
    Regularize any remaining differences, including a whitespace issue,
    a checkpatch warning, and add the check from commit 6900317 ("net,
    scm: fix PaX detected msg_controllen overflow in scm_detach_fds") which
    fixed an overflow unique to 64-bit. To avoid confusion when comparing
    the compat handler to the native handler, just include the same check
    in the compat handler.
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    7cec66e View commit details
    Browse the repository at this point in the history
  13. fs: Move __scm_install_fd() to __receive_fd()

    In preparation for users of the "install a received file" logic outside
    of net/ (pidfd and seccomp), relocate and rename __scm_install_fd() from
    net/core/scm.c to __receive_fd() in fs/file.c, and provide a wrapper
    named receive_fd_user(), as future patches will change the interface
    to __receive_fd().
    
    Additionally add a comment to fd_install() as a counterpoint to how
    __receive_fd() interacts with fput().
    
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Dmitry Kadashev <dkadashev@gmail.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Cc: Ido Schimmel <idosch@idosch.org>
    Cc: Ioana Ciornei <ioana.ciornei@nxp.com>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Reviewed-by: Sargun Dhillon <sargun@sargun.me>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    34f2d93 View commit details
    Browse the repository at this point in the history
  14. 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 <viro@zeniv.linux.org.uk>
    Cc: linux-fsdevel@vger.kernel.org
    Reviewed-by: Sargun Dhillon <sargun@sargun.me>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    3cc7fe4 View commit details
    Browse the repository at this point in the history
  15. pidfd: Replace open-coded receive_fd()

    Replace the open-coded version of receive_fd() with a call to the
    new helper.
    
    Thanks to Vamshi K Sthambamkadi <vamshi.k.sthambamkadi@gmail.com> for
    catching a missed fput() in an earlier version of this patch.
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Reviewed-by: Sargun Dhillon <sargun@sargun.me>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    65f1e9f View commit details
    Browse the repository at this point in the history
  16. fs: Expand __receive_fd() to accept existing fd

    Expand __receive_fd() with support for replace_fd() for the coming seccomp
    "addfd" ioctl(). Add new wrapper receive_fd_replace() for the new behavior
    and update existing wrappers to retain old behavior.
    
    Thanks to Colin Ian King <colin.king@canonical.com> for pointing out an
    uninitialized variable exposure in an earlier version of this patch.
    
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Dmitry Kadashev <dkadashev@gmail.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: linux-fsdevel@vger.kernel.org
    Reviewed-by: Sargun Dhillon <sargun@sargun.me>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    6694201 View commit details
    Browse the repository at this point in the history
  17. net/scm: Fix typo in SCM_RIGHTS compat refactoring

    When refactoring the SCM_RIGHTS code, I accidentally mis-merged my
    native/compat diffs, which entirely broke using SCM_RIGHTS in compat
    mode. Use the correct helper.
    
    Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
    Link: https://lists.ozlabs.org/pipermail/linuxppc-dev/2020-August/216156.html
    Reported-by: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
    Link: https://lore.kernel.org/lkml/1596812929.lz7fuo8r2w.none@localhost/
    Suggested-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Fixes: c0029de ("net/scm: Regularize compat handling of scm_detach_fds()")
    Tested-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
    Acked-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees authored and solarkennedy committed Aug 11, 2020
    Configuration menu
    Copy the full SHA
    9f6f4f2 View commit details
    Browse the repository at this point in the history