1. 23 12月, 2016 5 次提交
    • J
      ufs: fix function declaration for ufs_truncate_blocks · f698cccb
      Jeff Layton 提交于
      sparse says:
      
          fs/ufs/inode.c:1195:6: warning: symbol 'ufs_truncate_blocks' was not declared. Should it be static?
      
      Note that the forward declaration in the file is already marked static.
      Signed-off-by: NJeff Layton <jlayton@redhat.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      f698cccb
    • A
      fs: exec: apply CLOEXEC before changing dumpable task flags · 613cc2b6
      Aleksa Sarai 提交于
      If you have a process that has set itself to be non-dumpable, and it
      then undergoes exec(2), any CLOEXEC file descriptors it has open are
      "exposed" during a race window between the dumpable flags of the process
      being reset for exec(2) and CLOEXEC being applied to the file
      descriptors. This can be exploited by a process by attempting to access
      /proc/<pid>/fd/... during this window, without requiring CAP_SYS_PTRACE.
      
      The race in question is after set_dumpable has been (for get_link,
      though the trace is basically the same for readlink):
      
      [vfs]
      -> proc_pid_link_inode_operations.get_link
         -> proc_pid_get_link
            -> proc_fd_access_allowed
               -> ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
      
      Which will return 0, during the race window and CLOEXEC file descriptors
      will still be open during this window because do_close_on_exec has not
      been called yet. As a result, the ordering of these calls should be
      reversed to avoid this race window.
      
      This is of particular concern to container runtimes, where joining a
      PID namespace with file descriptors referring to the host filesystem
      can result in security issues (since PRCTL_SET_DUMPABLE doesn't protect
      against access of CLOEXEC file descriptors -- file descriptors which may
      reference filesystem objects the container shouldn't have access to).
      
      Cc: dev@opencontainers.org
      Cc: <stable@vger.kernel.org> # v3.2+
      Reported-by: NMichael Crosby <crosbymichael@gmail.com>
      Signed-off-by: NAleksa Sarai <asarai@suse.de>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      613cc2b6
    • T
      seq_file: reset iterator to first record for zero offset · e522751d
      Tomasz Majchrzak 提交于
      If kernfs file is empty on a first read, successive read operations
      using the same file descriptor will return no data, even when data is
      available. Default kernfs 'seq_next' implementation advances iterator
      position even when next object is not there. Kernfs 'seq_start' for
      following requests will not return iterator as position is already on
      the second object.
      
      This defect doesn't allow to monitor badblocks sysfs files from MD raid.
      They are initially empty but if data appears at some stage, userspace is
      not able to read it.
      Signed-off-by: NTomasz Majchrzak <tomasz.majchrzak@intel.com>
      Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      e522751d
    • D
      vfs: fix isize/pos/len checks for reflink & dedupe · 22725ce4
      Darrick J. Wong 提交于
      Strengthen the checking of pos/len vs. i_size, clarify the return values
      for the clone prep function, and remove pointless code.
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      22725ce4
    • A
      move aio compat to fs/aio.c · c00d2c7e
      Al Viro 提交于
      ... and fix the minor buglet in compat io_submit() - native one
      kills ioctx as cleanup when put_user() fails.  Get rid of
      bogus compat_... in !CONFIG_AIO case, while we are at it - they
      should simply fail with ENOSYS, same as for native counterparts.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      c00d2c7e
  2. 22 12月, 2016 10 次提交
    • L
      befs: add NFS export support · ac632f5b
      Luis de Bethencourt 提交于
      Implement mandatory export_operations, so it is possible to export befs via
      nfs.
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      ac632f5b
    • L
      befs: remove trailing whitespaces · e60f749b
      Luis de Bethencourt 提交于
      Removing all trailing whitespaces in befs.
      
      I was skeptic about tainting the history with this, but whitespace changes
      can be ignored by using 'git blame -w' and 'git log -w'.
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      e60f749b
    • L
      befs: remove signatures from comments · 50b00fc4
      Luis de Bethencourt 提交于
      No idea why some comments have signatures. These predate git. Removing them
      since they add noise and no information.
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      50b00fc4
    • L
      befs: fix style issues in header files · 12ecb38d
      Luis de Bethencourt 提交于
      Fixing checkpatch.pl issues in befs header files:
      WARNING: Missing a blank line after declarations
      +       befs_inode_addr iaddr;
      +       iaddr.allocation_group = blockno >> BEFS_SB(sb)->ag_shift;
      
      WARNING: space prohibited between function name and open parenthesis '('
      +       return BEFS_SB(sb)->block_size / sizeof (befs_disk_inode_addr);
      
      ERROR: "foo * bar" should be "foo *bar"
      +                   const char *key, befs_off_t * value);
      
      ERROR: Macros with complex values should be enclosed in parentheses
      +#define PACKED __attribute__ ((__packed__))
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      12ecb38d
    • L
      befs: fix style issues in linuxvfs.c · 62b80719
      Luis de Bethencourt 提交于
      Fix the following type of checkpatch.pl issues:
      WARNING: line over 80 characters
      +static struct dentry *befs_lookup(struct inode *, struct dentry *, unsigned int);
      
      ERROR: code indent should use tabs where possible
      +        if (!bi)$
      
      WARNING: please, no spaces at the start of a line
      +        if (!bi)$
      
      WARNING: labels should not be indented
      +      unacquire_bh:
      
      WARNING: space prohibited between function name and open parenthesis '('
      +                                             sizeof (struct befs_inode_info),
      
      WARNING: braces {} are not necessary for single statement blocks
      +       if (!*out) {
      +               return -ENOMEM;
      +       }
      
      WARNING: Block comments use a trailing */ on a separate line
      +        * in special cases */
      
      WARNING: Missing a blank line after declarations
      +               int token;
      +               if (!*p)
      
      ERROR: do not use assignment in if condition
      +       if (!(bh = sb_bread(sb, sb_block))) {
      
      ERROR: space prohibited after that open parenthesis '('
      +       if( befs_sb->num_blocks > ~((sector_t)0) ) {
      
      ERROR: space prohibited before that close parenthesis ')'
      +       if( befs_sb->num_blocks > ~((sector_t)0) ) {
      
      ERROR: space required before the open parenthesis '('
      +       if( befs_sb->num_blocks > ~((sector_t)0) ) {
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      62b80719
    • L
      befs: fix typos in linuxvfs.c · 1ca7087e
      Luis de Bethencourt 提交于
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      1ca7087e
    • L
      befs: fix style issues in io.c · 4c7df645
      Luis de Bethencourt 提交于
      Fixing the two following checkpatch.pl issues:
      ERROR: trailing whitespace
      + * Based on portions of file.c and inode.c $
      
      WARNING: labels should not be indented
      +      error:
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      4c7df645
    • L
      befs: fix style issues in inode.c · 85a06b30
      Luis de Bethencourt 提交于
      Fixing the following checkpatch.pl errors and warning:
      ERROR: trailing whitespace
      + * $
      
      WARNING: Block comments use * on subsequent lines
      +/*
      +       Validates the correctness of the befs inode
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_check_inode(struct super_block *sb, befs_inode * raw_inode,
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      85a06b30
    • L
      befs: fix style issues in debug.c · a83179a8
      Luis de Bethencourt 提交于
      Fix all checkpatch.pl errors and warnings in debug.c:
      ERROR: trailing whitespace
      + * $
      
      WARNING: Missing a blank line after declarations
      +       va_list args;
      +       va_start(args, fmt);
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_dump_inode(const struct super_block *sb, befs_inode * inode)
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_dump_super_block(const struct super_block *sb, befs_super_block * sup)
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_dump_small_data(const struct super_block *sb, befs_small_data * sd)
      
      WARNING: line over 80 characters
      +befs_dump_index_entry(const struct super_block *sb, befs_disk_btree_super * super)
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_dump_index_entry(const struct super_block *sb, befs_disk_btree_super * super)
      
      ERROR: "foo * bar" should be "foo *bar"
      +befs_dump_index_node(const struct super_block *sb, befs_btree_nodehead * node)
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      a83179a8
    • L
      splice: reinstate SIGPIPE/EPIPE handling · 52bce911
      Linus Torvalds 提交于
      Commit 8924feff ("splice: lift pipe_lock out of splice_to_pipe()")
      caused a regression when there were no more readers left on a pipe that
      was being spliced into: rather than the expected SIGPIPE and -EPIPE
      return value, the writer would end up waiting forever for space to free
      up (which obviously was not going to happen with no readers around).
      
      Fixes: 8924feff ("splice: lift pipe_lock out of splice_to_pipe()")
      Reported-and-tested-by: NAndreas Schwab <schwab@linux-m68k.org>
      Debugged-by: NAl Viro <viro@zeniv.linux.org.uk>
      Cc: stable@kernel.org   # v4.9
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      52bce911
  3. 20 12月, 2016 19 次提交
  4. 19 12月, 2016 1 次提交
    • J
      quota: Fix bogus warning in dquot_disable() · 2700e606
      Jan Kara 提交于
      dquot_disable() was warning when sb_has_quota_loaded() was true when
      invalidating page cache for quota files. The thinking behind this
      warning was that we must have raced with somebody else turning quotas on
      and this should not happen because all places modifying quota state must
      hold s_umount exclusively now. However sb_has_quota_loaded() can be also
      true at this point when we are just suspending quotas on remount
      read-only. Just restore the behavior to situation before commit
      c3b00446 ("quota: Remove dqonoff_mutex") which introduced the
      warning.
      
      The code in dquot_disable() can be further simplified with the new
      locking of quota state changes however let's leave that to a separate
      commit that can get more testing exposure.
      
      Fixes: c3b00446Signed-off-by: NJan Kara <jack@suse.cz>
      2700e606
  5. 17 12月, 2016 3 次提交
  6. 16 12月, 2016 2 次提交
    • G
      ovl: fix return value of ovl_fill_super · 313684c4
      Geliang Tang 提交于
      If kcalloc() failed, the return value of ovl_fill_super() is -EINVAL,
      not -ENOMEM. So this patch sets this value to -ENOMEM before calling
      kcalloc(), and sets it back to -EINVAL after calling kcalloc().
      Signed-off-by: NGeliang Tang <geliangtang@gmail.com>
      Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
      313684c4
    • A
      ovl: clean up kstat usage · 32a3d848
      Al Viro 提交于
      FWIW, there's a bit of abuse of struct kstat in overlayfs object
      creation paths - for one thing, it ends up with a very small subset
      of struct kstat (mode + rdev), for another it also needs link in
      case of symlinks and ends up passing it separately.
      
      IMO it would be better to introduce a separate object for that.
      
      In principle, we might even lift that thing into general API and switch
       ->mkdir()/->mknod()/->symlink() to identical calling conventions.  Hell
      knows, perhaps ->create() as well...
      Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
      32a3d848