All kinds of stuff. That probably should've been 5 or 6 separate branches, but by the time I'd realized how large and mixed that bag had become it had been too close to -final to play with rebasing. If you think it's too large, I can feed it in several pieces - just tell. I've some ideas on how to prevent something of that size developing the next cycle... Some fs/namei.c cleanups there, memdup_user_nul() introduction and switching open-coded instances, burying long-dead code, whack-a-mole of various kinds, several new helpers for ->llseek(), assorted cleanups and fixes from various people, etc. One piece probably deserves special mention - Neil's lookup_one_len_unlocked(). Similar to lookup_one_len(), but gets called without ->i_mutex and tries to avoid ever taking it. That, of course, means that it's not useful for any directory modifications, but things like getting inode attributes in nfds readdirplus are fine with that. I really should've asked for moratorium on lookup-related changes this cycle, but since I hadn't done that early enough... I *am* asking for that for the coming cycle, though - I'm going to try and get conversion of i_mutex to rwsem with ->lookup() done under lock taken shared. There will be a patch closer to the end of the window, along the lines of the one Linus had posted last May - mechanical conversion of ->i_mutex accesses to inode_lock()/inode_unlock()/inode_trylock()/ inode_is_locked()/inode_lock_nested(). To quote Linus back then: ----- | This is an automated patch using | | sed 's/mutex_lock(&\(.*\)->i_mutex)/inode_lock(\1)/' | sed 's/mutex_unlock(&\(.*\)->i_mutex)/inode_unlock(\1)/' | sed 's/mutex_lock_nested(&\(.*\)->i_mutex,[ ]*I_MUTEX_\([A-Z0-9_]*\))/inode_lock_nested(\1, I_MUTEX_\2)/' | sed 's/mutex_is_locked(&\(.*\)->i_mutex)/inode_is_locked(\1)/' | sed 's/mutex_trylock(&\(.*\)->i_mutex)/inode_trylock(\1)/' | | with a very few manual fixups ----- I'm going to send that once the ->i_mutex-affecting stuff in -next gets mostly merged (or when Linus says he's about to stop taking merges). One trivial conflict in lustre (between the lustre side of symlink stuff and Julia's one-liner constifying lustre symlink inode_operations in this branch. Resolved in obvious way... Unless you'd rather take it in several stages, please pull from git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.misc Shortlog: Abhi Das (1): fs: __generic_file_splice_read retry lookup on AOP_TRUNCATED_PAGE Al Viro (38): 9p/trans_virtio: don't bother with p9_tag_lookup() vgaarb: remove bogus checks f2fs: it's umode_t, not mode_t... don't opencode iget_failed() namei.c: fold set_root_rcu() into set_root() path_init(): set nd->inode earlier in cwd-relative case namei.c: take "jump to root" into a new helper restore_nameidata(): no need to clear now->stack don't open-code generic_file_llseek_size() new helpers: no_seek_end_llseek{,_size}() [mips] switch pvc_proc_cleanup() to remove_proc_subtree() new helper: memdup_user_nul() convert a bunch of open-coded instances of memdup_user_nul() selinuxfs: switch to memdup_user_nul() switch wireless debugfs ->write() instances to memdup_user_nul() cciss: switch to memdup_user_nul() kernel/*: switch to memdup_user_nul() proc_pid_attr_write(): switch to memdup_user() put the remnants of ..._user_ret() to rest ppc: get rid of the remnants of __get_user64() fix the leak in integrity_read_file() saner calling conventions for copy_mount_options() don't carry MAY_OPEN in op->acc_mode drivers/mtd/maps/pcmciamtd.c: __iomem annotations hpfs: missing endianness annotation dm-bufio: virt_to_phys() doesn't change remainder modulo PAGE_SIZE md: more open-coded offset_in_page() ... and a couple in net/9p jfs: microoptimize get_zeroed_page / virt_to_page HFS wants 8Kb per-superblock allocation; just use kmalloc() [um] hostaudio: don't open-code memdup_user() [um] mconsole: don't open-code memdup_user_nul() mtip32xx: don't open-code memdup_user() rsxx: don't open-code memdup_user() cdrom: don't open-code memdup_user() amdkfd: don't open-code memdup_user() nbd: use ->compat_ioctl() [s390] page_to_phys() always returns a multiple of PAGE_SIZE Arnd Bergmann (1): coredump: Use 64bit time for unix time of coredump DengChao (1): fs:affs:Replace time_t with time64_t Dmitry Monakhov (3): fs: use gendisk->disk_name where possible lib/vsprintf: add %*pg format specifier fs: use block_device name vsprintf helper Dmitry V. Levin (3): vfs: show_vfsmnt: remove redundant initialization of error code vfs: show_mountinfo: cleanup error code checks vfs: show_vfsstat: remove redundant initialization and check of error code Eric Dumazet (1): proc: add a reschedule point in proc_readfd_common() Julia Lawall (3): lustre: constify inode_operations structures adfs: constify adfs_dir_ops structures logfs: constify logfs_block_ops structures Mateusz Guzik (1): poll: plug an unused argument to do_poll Mike Marshall (1): typo in fs/namei.c comment NeilBrown (1): nfsd: don't hold i_mutex over userspace upcalls Rasmus Villemoes (1): fs/file.c: __const_max is actually __const_min :-) Richard Weinberger (1): fs: xattr: Use kvfree() Sasha Levin (1): fs/9p: use fscache mutex rather than spinlock Stanislav Kinsburskiy (1): fcntl: allow to set O_DIRECT flag on pipe Yaowei Bai (5): fs/block_dev.c: make sb_is_blkdev_sb return bool when CONFIG_BLOCK undefined fs/namespace.c: path_is_under can be boolean fs/dcache.c: is_subdir can be boolean fs/bad_inode.c: is_bad_inode can be boolean fs/attr.c: is_sxid can be boolean Diffstat: Documentation/printk-formats.txt | 6 + arch/blackfin/include/asm/uaccess.h | 6 - arch/m68k/include/asm/uaccess_no.h | 4 - arch/mips/lasat/picvue_proc.c | 18 +- arch/mn10300/include/asm/uaccess.h | 15 -- arch/powerpc/include/asm/uaccess.h | 15 -- arch/powerpc/kernel/nvram_64.c | 19 +- arch/s390/pci/pci_dma.c | 3 +- arch/sparc/include/asm/uaccess_32.h | 65 ------- arch/sparc/include/asm/uaccess_64.h | 40 ----- arch/sparc/kernel/mdesc.c | 20 +-- arch/um/drivers/hostaudio_kern.c | 10 +- arch/um/drivers/mconsole_kern.c | 14 +- arch/x86/kernel/cpuid.c | 24 +-- arch/x86/kernel/msr.c | 24 +-- arch/xtensa/platforms/iss/simdisk.c | 12 +- drivers/block/cciss.c | 14 +- drivers/block/mtip32xx/mtip32xx.c | 23 +-- drivers/block/nbd.c | 1 + drivers/block/rsxx/core.c | 11 +- drivers/cdrom/cdrom.c | 10 +- drivers/char/generic_nvram.c | 21 +-- drivers/char/mbcs.c | 28 +-- drivers/char/nvram.c | 18 +- drivers/char/nwflash.c | 31 +--- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 33 +--- drivers/gpu/vga/vgaarb.c | 7 - drivers/md/bcache/util.c | 2 +- drivers/md/dm-bufio.c | 2 +- drivers/md/dm-io.c | 4 +- drivers/mtd/maps/pcmciamtd.c | 28 +-- drivers/net/wireless/ath/wil6210/debugfs.c | 12 +- drivers/net/wireless/libertas/debugfs.c | 181 +++++++------------ drivers/net/wireless/mwifiex/debugfs.c | 82 +++------ drivers/net/wireless/ti/wlcore/debugfs.c | 17 +- drivers/s390/char/vmcp.c | 11 +- drivers/s390/char/vmur.c | 15 +- drivers/s390/char/zcore.c | 13 +- drivers/sbus/char/openprom.c | 13 +- drivers/staging/lustre/lustre/llite/file.c | 2 +- .../staging/lustre/lustre/llite/llite_internal.h | 4 +- drivers/staging/lustre/lustre/llite/namei.c | 4 +- drivers/staging/lustre/lustre/llite/symlink.c | 2 +- drivers/usb/core/devices.c | 26 +-- drivers/usb/core/devio.c | 26 +-- drivers/usb/host/uhci-debug.c | 23 +-- drivers/usb/misc/sisusbvga/sisusb.c | 16 +- fs/9p/cache.c | 8 +- fs/9p/v9fs.h | 2 +- fs/9p/vfs_inode.c | 2 +- fs/adfs/adfs.h | 6 +- fs/adfs/dir.c | 6 +- fs/adfs/dir_f.c | 2 +- fs/adfs/dir_fplus.c | 2 +- fs/affs/affs.h | 2 +- fs/affs/amigaffs.c | 13 +- fs/affs/super.c | 2 +- fs/afs/proc.c | 25 +-- fs/bad_inode.c | 2 +- fs/block_dev.c | 12 +- fs/btrfs/super.c | 4 +- fs/buffer.c | 21 +-- fs/cachefiles/daemon.c | 12 +- fs/compat.c | 21 ++- fs/compat_ioctl.c | 11 -- fs/coredump.c | 8 +- fs/dcache.c | 14 +- fs/dlm/user.c | 11 +- fs/ecryptfs/inode.c | 4 +- fs/exec.c | 4 +- fs/ext2/xattr.c | 6 +- fs/ext4/page-io.c | 5 +- fs/ext4/xattr.c | 6 +- fs/f2fs/debug.c | 6 +- fs/f2fs/f2fs.h | 6 +- fs/fcntl.c | 3 +- fs/file.c | 6 +- fs/gfs2/ops_fstype.c | 4 +- fs/hfs/mdb.c | 4 +- fs/hpfs/map.c | 2 +- fs/internal.h | 2 +- fs/jbd2/transaction.c | 6 +- fs/jfs/jfs_logmgr.c | 9 +- fs/logfs/logfs.h | 4 +- fs/logfs/readwrite.c | 4 +- fs/logfs/segment.c | 2 +- fs/minix/itree_v1.c | 9 +- fs/minix/itree_v2.c | 9 +- fs/namei.c | 200 ++++++++++++++------- fs/namespace.c | 39 ++-- fs/nfsd/nfs3xdr.c | 2 +- fs/nfsd/nfs4xdr.c | 8 +- fs/nfsd/vfs.c | 23 +-- fs/nilfs2/super.c | 6 +- fs/open.c | 5 +- fs/proc/base.c | 17 +- fs/proc/fd.c | 1 + fs/proc_namespace.c | 27 +-- fs/read_write.c | 39 ++++ fs/reiserfs/journal.c | 24 ++- fs/reiserfs/prints.c | 9 +- fs/reiserfs/procfs.c | 5 +- fs/select.c | 6 +- fs/splice.c | 8 +- fs/squashfs/super.c | 7 +- fs/super.c | 4 +- fs/xattr.c | 38 ++-- fs/xfs/xfs_buf.c | 8 +- include/linux/fs.h | 14 +- include/linux/namei.h | 1 + include/linux/string.h | 1 + kernel/sysctl.c | 79 +++----- kernel/trace/blktrace.c | 12 +- kernel/trace/trace_events.c | 28 +-- kernel/trace/trace_events_trigger.c | 15 +- kernel/user_namespace.c | 21 +-- lib/dynamic_debug.c | 11 +- lib/vsprintf.c | 29 +++ mm/util.c | 31 ++++ net/9p/trans_virtio.c | 16 +- net/rxrpc/ar-key.c | 24 +-- security/integrity/iint.c | 11 +- security/selinux/selinuxfs.c | 114 +++++------- security/smack/smackfs.c | 114 ++++-------- security/tomoyo/securityfs_if.c | 11 +- 125 files changed, 792 insertions(+), 1478 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html