[git pull] vfs.git, part 6: misc stuff

From: Al Viro
Date: Mon Jan 11 2016 - 22:54:47 EST


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(-)