08 Nov, 2015

2 commits

  • Merge second patch-bomb from Andrew Morton:

    - most of the rest of MM

    - procfs

    - lib/ updates

    - printk updates

    - bitops infrastructure tweaks

    - checkpatch updates

    - nilfs2 update

    - signals

    - various other misc bits: coredump, seqfile, kexec, pidns, zlib, ipc,
    dma-debug, dma-mapping, ...

    * emailed patches from Andrew Morton : (102 commits)
    ipc,msg: drop dst nil validation in copy_msg
    include/linux/zutil.h: fix usage example of zlib_adler32()
    panic: release stale console lock to always get the logbuf printed out
    dma-debug: check nents in dma_sync_sg*
    dma-mapping: tidy up dma_parms default handling
    pidns: fix set/getpriority and ioprio_set/get in PRIO_USER mode
    kexec: use file name as the output message prefix
    fs, seqfile: always allow oom killer
    seq_file: reuse string_escape_str()
    fs/seq_file: use seq_* helpers in seq_hex_dump()
    coredump: change zap_threads() and zap_process() to use for_each_thread()
    coredump: ensure all coredumping tasks have SIGNAL_GROUP_COREDUMP
    signal: remove jffs2_garbage_collect_thread()->allow_signal(SIGCONT)
    signal: introduce kernel_signal_stop() to fix jffs2_garbage_collect_thread()
    signal: turn dequeue_signal_lock() into kernel_dequeue_signal()
    signals: kill block_all_signals() and unblock_all_signals()
    nilfs2: fix gcc uninitialized-variable warnings in powerpc build
    nilfs2: fix gcc unused-but-set-variable warnings
    MAINTAINERS: nilfs2: add header file for tracing
    nilfs2: add tracepoints for analyzing reading and writing metadata files
    ...

    Linus Torvalds
     
  • Pull trivial updates from Jiri Kosina:
    "Trivial stuff from trivial tree that can be trivially summed up as:

    - treewide drop of spurious unlikely() before IS_ERR() from Viresh
    Kumar

    - cosmetic fixes (that don't really affect basic functionality of the
    driver) for pktcdvd and bcache, from Julia Lawall and Petr Mladek

    - various comment / printk fixes and updates all over the place"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    bcache: Really show state of work pending bit
    hwmon: applesmc: fix comment typos
    Kconfig: remove comment about scsi_wait_scan module
    class_find_device: fix reference to argument "match"
    debugfs: document that debugfs_remove*() accepts NULL and error values
    net: Drop unlikely before IS_ERR(_OR_NULL)
    mm: Drop unlikely before IS_ERR(_OR_NULL)
    fs: Drop unlikely before IS_ERR(_OR_NULL)
    drivers: net: Drop unlikely before IS_ERR(_OR_NULL)
    drivers: misc: Drop unlikely before IS_ERR(_OR_NULL)
    UBI: Update comments to reflect UBI_METAONLY flag
    pktcdvd: drop null test before destroy functions

    Linus Torvalds
     

07 Nov, 2015

1 commit

  • There are many places which use mapping_gfp_mask to restrict a more
    generic gfp mask which would be used for allocations which are not
    directly related to the page cache but they are performed in the same
    context.

    Let's introduce a helper function which makes the restriction explicit and
    easier to track. This patch doesn't introduce any functional changes.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Michal Hocko
    Suggested-by: Andrew Morton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     

06 Nov, 2015

1 commit

  • Pull userns hardlink capability check fix from Eric Biederman:
    "This round just contains a single patch. There has been a lot of
    other work this period but it is not quite ready yet, so I am pushing
    it until 4.5.

    The remaining change by Dirk Steinmetz wich fixes both Gentoo and
    Ubuntu containers allows hardlinks if we have the appropriate
    capabilities in the user namespace. Security wise it is really a
    gimme as the user namespace root can already call setuid become that
    user and create the hardlink"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
    namei: permit linking with CAP_FOWNER in userns

    Linus Torvalds
     

28 Oct, 2015

1 commit

  • Attempting to hardlink to an unsafe file (e.g. a setuid binary) from
    within an unprivileged user namespace fails, even if CAP_FOWNER is held
    within the namespace. This may cause various failures, such as a gentoo
    installation within a lxc container failing to build and install specific
    packages.

    This change permits hardlinking of files owned by mapped uids, if
    CAP_FOWNER is held for that namespace. Furthermore, it improves consistency
    by using the existing inode_owner_or_capable(), which is aware of
    namespaced capabilities as of 23adbe12ef7d3 ("fs,userns: Change
    inode_capable to capable_wrt_inode_uidgid").

    Signed-off-by: Dirk Steinmetz

    This is hitting us in Ubuntu during some dpkg upgrades in containers.
    When upgrading a file dpkg creates a hard link to the old file to back
    it up before overwriting it. When packages upgrade suid files owned by a
    non-root user the link isn't permitted, and the package upgrade fails.
    This patch fixes our problem.

    Tested-by: Seth Forshee
    Signed-off-by: Eric W. Biederman

    Dirk Steinmetz
     

11 Oct, 2015

1 commit

  • Leandro Awa writes:
    "After switching to version 4.1.6, our parallelized and distributed
    workflows now fail consistently with errors of the form:

    T34: ./regex.c:39:22: error: config.h: No such file or directory

    From our 'git bisect' testing, the following commit appears to be the
    possible cause of the behavior we've been seeing: commit 766c4cbfacd8"

    Al Viro says:
    "What happens is that 766c4cbfacd8 got the things subtly wrong.

    We used to treat d_is_negative() after lookup_fast() as "fall with
    ENOENT". That was wrong - checking ->d_flags outside of ->d_seq
    protection is unreliable and failing with hard error on what should've
    fallen back to non-RCU pathname resolution is a bug.

    Unfortunately, we'd pulled the test too far up and ran afoul of
    another kind of staleness. The dentry might have been absolutely
    stable from the RCU point of view (and we might be on UP, etc), but
    stale from the remote fs point of view. If ->d_revalidate() returns
    "it's actually stale", dentry gets thrown away and the original code
    wouldn't even have looked at its ->d_flags.

    What we need is to check ->d_flags where 766c4cbfacd8 does (prior to
    ->d_seq validation) but only use the result in cases where we do not
    discard this dentry outright"

    Reported-by: Leandro Awa
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=104911
    Fixes: 766c4cbfacd8 ("namei: d_is_negative() should be checked...")
    Tested-by: Leandro Awa
    Cc: stable@vger.kernel.org # v4.1+
    Signed-off-by: Trond Myklebust
    Acked-by: Al Viro
    Signed-off-by: Linus Torvalds

    Trond Myklebust
     

29 Sep, 2015

1 commit

  • IS_ERR(_OR_NULL) already contain an 'unlikely' compiler flag and there
    is no need to do that again from its callers. Drop it.

    Signed-off-by: Viresh Kumar
    Reviewed-by: Jeff Layton
    Reviewed-by: David Howells
    Reviewed-by: Steve French
    Signed-off-by: Jiri Kosina

    Viresh Kumar
     

11 Sep, 2015

1 commit

  • Fix the following warnings:

    Warning(.//fs/namei.c:2422): No description found for parameter 'nd'
    Warning(.//fs/namei.c:2422): Excess function parameter 'nameidata'
    description in 'path_mountpoint'

    Signed-off-by: Masanari Iida
    Acked-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masanari Iida
     

21 Aug, 2015

1 commit

  • In rare cases a directory can be renamed out from under a bind mount.
    In those cases without special handling it becomes possible to walk up
    the directory tree to the root dentry of the filesystem and down
    from the root dentry to every other file or directory on the filesystem.

    Like division by zero .. from an unconnected path can not be given
    a useful semantic as there is no predicting at which path component
    the code will realize it is unconnected. We certainly can not match
    the current behavior as the current behavior is a security hole.

    Therefore when encounting .. when following an unconnected path
    return -ENOENT.

    - Add a function path_connected to verify path->dentry is reachable
    from path->mnt.mnt_root. AKA to validate that rename did not do
    something nasty to the bind mount.

    To avoid races path_connected must be called after following a path
    component to it's next path component.

    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: Al Viro

    Eric W. Biederman
     

05 Aug, 2015

1 commit


02 Aug, 2015

1 commit

  • In RCU mode we might end up with dentry evicted just we check
    that it's a directory. In such case we should return ECHILD
    rather than ENOTDIR, so that pathwalk would be retries in non-RCU
    mode.

    Breakage had been introduced in commit b18825a - prior to that
    we were looking at nd->inode, which had been fetched before
    verifying that ->d_seq was still valid. That form of check
    would only be satisfied if at some point the pathname prefix
    would indeed have resolved to a non-directory. The fix consists
    of checking ->d_seq after we'd run into a non-directory dentry,
    and failing with ECHILD in case of mismatch.

    Note that all branches since 3.12 have that problem...

    Signed-off-by: Al Viro

    Al Viro
     

30 Jun, 2015

1 commit

  • The only caller that cares about its return value can just
    as easily pick it from nd->root_seq itself. We used to just
    calculate it and return to caller, but these days we are
    storing it in nd->root_seq in all cases.

    Signed-off-by: Al Viro

    Al Viro
     

15 May, 2015

22 commits


11 May, 2015

6 commits

  • we'll need them for unlazy_walk()

    Signed-off-by: Al Viro

    Al Viro
     
  • We *can't* call that audit garbage in RCU mode - it's doing a weird
    mix of allocations (GFP_NOFS, immediately followed by GFP_KERNEL)
    and I'm not touching that... thing again.

    So if this security sclero^Whardening feature gets triggered when
    we are in RCU mode, tough - we'll fail with -ECHILD and have
    everything restarted in non-RCU mode. Only to hit the same test
    and fail, this time with EACCES and with (oh, rapture) an audit spew
    produced.

    Signed-off-by: Al Viro

    Al Viro
     
  • very simple - just make path_put() conditional on !RCU.
    Note that right now it doesn't get called in RCU mode -
    we leave it before getting anything into stack.

    Signed-off-by: Al Viro

    Al Viro
     
  • only one instance looks at that argument at all; that sole
    exception wants inode rather than dentry.

    Signed-off-by: Al Viro

    Al Viro
     
  • inode_follow_link now takes an inode and rcu flag as well as the
    dentry.

    inode is used in preference to d_backing_inode(dentry), particularly
    in RCU-walk mode.

    selinux_inode_follow_link() gets dentry_has_perm() and
    inode_has_perm() open-coded into it so that it can call
    avc_has_perm_flags() in way that is safe if LOOKUP_RCU is set.

    Calling avc_has_perm_flags() with rcu_read_lock() held means
    that when avc_has_perm_noaudit calls avc_compute_av(), the attempt
    to rcu_read_unlock() before calling security_compute_av() will not
    actually drop the RCU read-lock.

    However as security_compute_av() is completely in a read_lock()ed
    region, it should be safe with the RCU read-lock held.

    Signed-off-by: NeilBrown
    Signed-off-by: Al Viro

    NeilBrown
     
  • no need to refetch (and once we move unlazy out of there, recheck ->d_seq).

    Signed-off-by: Al Viro

    Al Viro