aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-13 05:28:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-13 05:28:42 -0400
commit77c688ac87183537ed0fb84ec2cb8fa8ec97c458 (patch)
treed18e117e05c0d71463823536165ddd9ad75b6bc5
parent5e40d331bd72447197f26525f21711c4a265b6a6 (diff)
parenta457606a6f81cfddfc9da1ef2a8bf2c65a8eb35e (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro: "The big thing in this pile is Eric's unmount-on-rmdir series; we finally have everything we need for that. The final piece of prereqs is delayed mntput() - now filesystem shutdown always happens on shallow stack. Other than that, we have several new primitives for iov_iter (Matt Wilcox, culled from his XIP-related series) pushing the conversion to ->read_iter()/ ->write_iter() a bit more, a bunch of fs/dcache.c cleanups and fixes (including the external name refcounting, which gives consistent behaviour of d_move() wrt procfs symlinks for long and short names alike) and assorted cleanups and fixes all over the place. This is just the first pile; there's a lot of stuff from various people that ought to go in this window. Starting with unionmount/overlayfs mess... ;-/" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (60 commits) fs/file_table.c: Update alloc_file() comment vfs: Deduplicate code shared by xattr system calls operating on paths reiserfs: remove pointless forward declaration of struct nameidata don't need that forward declaration of struct nameidata in dcache.h anymore take dname_external() into fs/dcache.c let path_init() failures treated the same way as subsequent link_path_walk() fix misuses of f_count() in ppp and netlink ncpfs: use list_for_each_entry() for d_subdirs walk vfs: move getname() from callers to do_mount() gfs2_atomic_open(): skip lookups on hashed dentry [infiniband] remove pointless assignments gadgetfs: saner API for gadgetfs_create_file() f_fs: saner API for ffs_sb_create_file() jfs: don't hash direct inode [s390] remove pointless assignment of ->f_op in vmlogrdr ->open() ecryptfs: ->f_op is never NULL android: ->f_op is never NULL nouveau: __iomem misannotations missing annotation in fs/file.c fs: namespace: suppress 'may be used uninitialized' warnings ...
-rw-r--r--Documentation/filesystems/vfs.txt2
-rw-r--r--arch/alpha/kernel/osf_sys.c23
-rw-r--r--arch/x86/ia32/ia32_aout.c21
-rw-r--r--drivers/block/rsxx/core.c81
-rw-r--r--drivers/bluetooth/hci_vhci.c22
-rw-r--r--drivers/char/mem.c56
-rw-r--r--drivers/dma-buf/dma-buf.c2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_nvif.c4
-rw-r--r--drivers/gpu/drm/nouveau/nvif/driver.h4
-rw-r--r--drivers/gpu/drm/nouveau/nvif/object.h6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_fs.c1
-rw-r--r--drivers/infiniband/hw/qib/qib_fs.c1
-rw-r--r--drivers/misc/carma/carma-fpga-program.c30
-rw-r--r--drivers/net/ppp/ppp_generic.c2
-rw-r--r--drivers/s390/char/vmlogrdr.c1
-rw-r--r--drivers/staging/android/ashmem.c2
-rw-r--r--drivers/staging/android/ion/compat_ion.c2
-rw-r--r--drivers/staging/android/logger.c103
-rw-r--r--drivers/staging/vme/devices/vme_user.c28
-rw-r--r--drivers/usb/gadget/function/f_fs.c24
-rw-r--r--drivers/usb/gadget/legacy/inode.c26
-rw-r--r--fs/9p/fid.c4
-rw-r--r--fs/9p/vfs_addr.c4
-rw-r--r--fs/9p/vfs_dentry.c8
-rw-r--r--fs/9p/vfs_dir.c4
-rw-r--r--fs/9p/vfs_file.c8
-rw-r--r--fs/9p/vfs_inode.c32
-rw-r--r--fs/9p/vfs_inode_dotl.c8
-rw-r--r--fs/afs/dir.c5
-rw-r--r--fs/autofs4/expire.c6
-rw-r--r--fs/binfmt_aout.c25
-rw-r--r--fs/binfmt_elf.c25
-rw-r--r--fs/binfmt_elf_fdpic.c24
-rw-r--r--fs/btrfs/ioctl.c5
-rw-r--r--fs/buffer.c5
-rw-r--r--fs/cachefiles/rdwr.c48
-rw-r--r--fs/ceph/dir.c1
-rw-r--r--fs/cifs/dir.c14
-rw-r--r--fs/cifs/file.c12
-rw-r--r--fs/cifs/inode.c12
-rw-r--r--fs/cifs/readdir.c6
-rw-r--r--fs/compat.c28
-rw-r--r--fs/dcache.c259
-rw-r--r--fs/ecryptfs/file.c2
-rw-r--r--fs/exec.c17
-rw-r--r--fs/file.c1
-rw-r--r--fs/file_table.c12
-rw-r--r--fs/fuse/dir.c7
-rw-r--r--fs/gfs2/dentry.c3
-rw-r--r--fs/gfs2/inode.c5
-rw-r--r--fs/internal.h2
-rw-r--r--fs/jffs2/jffs2_fs_sb.h2
-rw-r--r--fs/jffs2/wbuf.c17
-rw-r--r--fs/jfs/super.c2
-rw-r--r--fs/kernfs/dir.c11
-rw-r--r--fs/mount.h25
-rw-r--r--fs/namei.c27
-rw-r--r--fs/namespace.c203
-rw-r--r--fs/ncpfs/dir.c6
-rw-r--r--fs/ncpfs/ncplib_kernel.h14
-rw-r--r--fs/nfs/dir.c7
-rw-r--r--fs/proc/base.c10
-rw-r--r--fs/proc/fd.c2
-rw-r--r--fs/read_write.c2
-rw-r--r--fs/reiserfs/xattr.h1
-rw-r--r--fs/super.c2
-rw-r--r--fs/xattr.c116
-rw-r--r--include/linux/dcache.h9
-rw-r--r--include/linux/fs.h5
-rw-r--r--include/linux/uio.h3
-rw-r--r--kernel/printk/printk.c20
-rw-r--r--mm/iov_iter.c240
-rw-r--r--net/netlink/af_netlink.c2
-rw-r--r--tools/perf/util/string.c90
74 files changed, 889 insertions, 960 deletions
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 8be1ea3bdd5a..fceff7c00a3c 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -237,7 +237,7 @@ noted. This means that most methods can block safely. All methods are
237only called from a process context (i.e. not from an interrupt handler 237only called from a process context (i.e. not from an interrupt handler
238or bottom half). 238or bottom half).
239 239
240 alloc_inode: this method is called by inode_alloc() to allocate memory 240 alloc_inode: this method is called by alloc_inode() to allocate memory
241 for struct inode and initialize it. If this function is not 241 for struct inode and initialize it. If this function is not
242 defined, a simple 'struct inode' is allocated. Normally 242 defined, a simple 'struct inode' is allocated. Normally
243 alloc_inode will be used to allocate a larger structure which 243 alloc_inode will be used to allocate a larger structure which
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 1402fcc11c2c..f9c732e18284 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -446,7 +446,8 @@ struct procfs_args {
446 * unhappy with OSF UFS. [CHECKME] 446 * unhappy with OSF UFS. [CHECKME]
447 */ 447 */
448static int 448static int
449osf_ufs_mount(const char *dirname, struct ufs_args __user *args, int flags) 449osf_ufs_mount(const char __user *dirname,
450 struct ufs_args __user *args, int flags)
450{ 451{
451 int retval; 452 int retval;
452 struct cdfs_args tmp; 453 struct cdfs_args tmp;
@@ -466,7 +467,8 @@ osf_ufs_mount(const char *dirname, struct ufs_args __user *args, int flags)
466} 467}
467 468
468static int 469static int
469osf_cdfs_mount(const char *dirname, struct cdfs_args __user *args, int flags) 470osf_cdfs_mount(const char __user *dirname,
471 struct cdfs_args __user *args, int flags)
470{ 472{
471 int retval; 473 int retval;
472 struct cdfs_args tmp; 474 struct cdfs_args tmp;
@@ -486,7 +488,8 @@ osf_cdfs_mount(const char *dirname, struct cdfs_args __user *args, int flags)
486} 488}
487 489
488static int 490static int
489osf_procfs_mount(const char *dirname, struct procfs_args __user *args, int flags) 491osf_procfs_mount(const char __user *dirname,
492 struct procfs_args __user *args, int flags)
490{ 493{
491 struct procfs_args tmp; 494 struct procfs_args tmp;
492 495
@@ -500,28 +503,22 @@ SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path,
500 int, flag, void __user *, data) 503 int, flag, void __user *, data)
501{ 504{
502 int retval; 505 int retval;
503 struct filename *name;
504 506
505 name = getname(path);
506 retval = PTR_ERR(name);
507 if (IS_ERR(name))
508 goto out;
509 switch (typenr) { 507 switch (typenr) {
510 case 1: 508 case 1:
511 retval = osf_ufs_mount(name->name, data, flag); 509 retval = osf_ufs_mount(path, data, flag);
512 break; 510 break;
513 case 6: 511 case 6:
514 retval = osf_cdfs_mount(name->name, data, flag); 512 retval = osf_cdfs_mount(path, data, flag);
515 break;