lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 673/717] openat2: reject RESOLVE_BENEATH|RESOLVE_IN_ROOT
    Date
    From: Aleksa Sarai <cyphar@cyphar.com>

    commit 398840f8bb935d33c64df4ec4fed77a7d24c267d upstream.

    This was an oversight in the original implementation, as it makes no
    sense to specify both scoping flags to the same openat2(2) invocation
    (before this patch, the result of such an invocation was equivalent to
    RESOLVE_IN_ROOT being ignored).

    This is a userspace-visible ABI change, but the only user of openat2(2)
    at the moment is LXC which doesn't specify both flags and so no
    userspace programs will break as a result.

    Fixes: fddb5d430ad9 ("open: introduce openat2(2) syscall")
    Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: <stable@vger.kernel.org> # v5.6+
    Link: https://lore.kernel.org/r/20201027235044.5240-2-cyphar@cyphar.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/open.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/fs/open.c
    +++ b/fs/open.c
    @@ -1010,6 +1010,10 @@ inline int build_open_flags(const struct
    if (how->resolve & ~VALID_RESOLVE_FLAGS)
    return -EINVAL;

    + /* Scoping flags are mutually exclusive. */
    + if ((how->resolve & RESOLVE_BENEATH) && (how->resolve & RESOLVE_IN_ROOT))
    + return -EINVAL;
    +
    /* Deal with the mode. */
    if (WILL_CREATE(flags)) {
    if (how->mode & ~S_IALLUGO)

    \
     
     \ /
      Last update: 2020-12-28 15:33    [W:2.971 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site