linux-uconsole/fs
Chuck Lever 22e20005d2 NFS: Fix panic after nfs_umount()
commit 5b362ac379 upstream.

After a few unsuccessful NFS mount attempts in which the client and
server cannot agree on an authentication flavor both support, the
client panics.  nfs_umount() is invoked in the kernel in this case.

Turns out nfs_umount()'s UMNT RPC invocation causes the RPC client to
write off the end of the rpc_clnt's iostat array.  This is because the
mount client's nrprocs field is initialized with the count of defined
procedures (two: MNT and UMNT), rather than the size of the client's
proc array (four).

The fix is to use the same initialization technique used by most other
upper layer clients in the kernel.

Introduced by commit 0b524123, which failed to update nrprocs when
support was added for UMNT in the kernel.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=24302
BugLink: http://bugs.launchpad.net/bugs/683938

Reported-by: Stefan Bader <stefan.bader@canonical.com>
Tested-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-01-07 14:43:04 -08:00
..
9p 9p: Skip check for mandatory locks when unlocking 2010-04-26 07:41:29 -07:00
adfs adfs: remove redundant test on unsigned 2009-09-24 07:21:05 -07:00
affs fix affs parse_options() 2010-02-09 04:50:48 -08:00
afs FS-Cache: Handle pages pending storage that get evicted under OOM conditions 2009-11-19 18:11:35 +00:00
autofs trivial: remove unnecessary semicolons 2009-09-21 15:14:58 +02:00
autofs4 autofs4 - fix missed case when changing to use struct path 2009-08-31 17:44:05 -10:00
befs befs: fix leak 2010-02-23 07:37:55 -08:00
bfs Fix failure exits in bfs_fill_super() 2010-02-09 04:50:46 -08:00
btrfs Btrfs: kfree correct pointer during mount option parsing 2010-08-13 13:20:12 -07:00
cachefiles CacheFiles: Fix error handling in cachefiles_determine_cache_security() 2010-05-26 14:29:20 -07:00
cifs CIFS: Fix compile error with __init in cifs_init_dns_resolver() definition 2010-08-10 10:20:46 -07:00
coda headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
configfs writeback: add name to backing_dev_info 2009-09-11 09:20:26 +02:00
cramfs
debugfs debugfs: fix create mutex racy fops and private data 2009-12-18 14:04:16 -08:00
devpts devpts_get_tty() should validate inode 2009-12-18 14:04:15 -08:00
dlm dlm: send reply before bast 2010-08-13 13:20:21 -07:00
ecryptfs eCryptfs: Clear LOOKUP_OPEN flag when creating lower file 2010-12-09 13:26:45 -08:00
efs get rid of BKL in fs/efs 2009-06-17 00:36:36 -04:00
exofs exofs: confusion between kmap() and kmap_atomic() api 2010-07-05 11:10:47 -07:00
exportfs
ext2 Merge branch 'hwpoison' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6 2009-09-24 07:53:22 -07:00
ext3 ext3: journal all modifications in ext3_xattr_set_handle 2010-04-26 07:41:21 -07:00
ext4 ext4: Fix remaining racy updates of EXT4_I(inode)->i_flags 2010-09-26 17:21:29 -07:00
fat fat: fix buffer overflow in vfat_create_shortname() 2010-04-26 07:41:13 -07:00
freevxfs headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
fscache FS-Cache: Provide nop fscache_stat_d() if CONFIG_FSCACHE_STATS=n 2009-11-20 21:50:44 +00:00
fuse fuse: fix ioctl when server is 32bit 2011-01-07 14:43:02 -08:00
gfs2 GFS2: rename causes kernel Oops 2010-08-10 10:20:45 -07:00
hfs hfs: fix a potential buffer overflow 2009-12-18 14:04:08 -08:00
hfsplus hfsplus: refuse to mount volumes larger than 2TB 2009-10-29 07:39:27 -07:00
hostfs hostfs: set maximum filesize in superblock for proper LFS support 2009-06-30 18:56:03 -07:00
hpfs headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
hppfs
hugetlbfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2009-09-24 08:32:11 -07:00
isofs fs: Make unload_nls() NULL pointer safe 2009-09-24 07:47:42 -04:00
jbd jbd: jbd-debug and jbd2-debug should be writable 2010-07-05 11:11:20 -07:00
jbd2 ext4, jbd2: Add barriers for file systems with exernal journals 2010-08-02 10:21:10 -07:00
jffs2 jffs2: Fix long-standing bug with symlink garbage collection. 2009-12-18 14:05:52 -08:00
jfs jfs: don't allow os2 xattr namespace overlap with others 2010-08-13 13:19:48 -07:00
lockd headers: utsname.h redux 2009-09-23 18:13:10 -07:00
minix V3 minixfs: add missing directory type checking 2009-09-23 07:39:57 -07:00
ncpfs const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
nfs NFS: Fix panic after nfs_umount() 2011-01-07 14:43:04 -08:00
nfs_common
nfsd NFSD: don't report compiled-out versions as present 2010-07-05 11:10:27 -07:00
nilfs2 nilfs2: fix sync silent failure 2010-05-26 14:29:21 -07:00
nls Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6 2009-09-30 09:31:14 -07:00
notify inotify: fix inotify oneshot support 2010-09-26 17:21:38 -07:00
ntfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2009-09-24 08:32:11 -07:00
ocfs2 ocfs2: Don't walk off the end of fast symlinks. 2010-10-28 21:44:02 -07:00
omfs const: constify remaining file_operations 2009-10-01 16:11:11 -07:00
openpromfs
partitions dasd: use correct label location for diag fba disks 2010-09-26 17:21:36 -07:00
proc mm: Move vma_stack_continue into mm.h 2010-10-28 21:44:18 -07:00
qnx4 qnx4: remove write support 2009-09-23 07:39:30 -07:00
quota quota: Fix possible dq_flags corruption 2010-04-26 07:41:29 -07:00
ramfs truncate: use new helpers 2009-09-24 08:41:47 -04:00
reiserfs reiserfs: fix oops while creating privroot with selinux enabled 2010-08-13 13:20:20 -07:00
romfs fix leak in romfs_fill_super() 2010-02-09 04:50:47 -08:00
smbfs fs: Make unload_nls() NULL pointer safe 2009-09-24 07:47:42 -04:00
squashfs const: mark remaining super_operations const 2009-09-22 07:17:24 -07:00
sysfs sysfs: checking for NULL instead of ERR_PTR 2010-09-20 13:17:50 -07:00
sysv get rid of BKL in fs/sysv 2009-06-17 00:36:37 -04:00
ubifs const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
udf udf: Try harder when looking for VAT inode 2010-01-06 15:05:00 -08:00
ufs ufs: sector_t cannot be negative 2009-06-18 13:03:46 -07:00
xfs xfs: prevent reading uninitialized stack memory 2010-09-26 17:21:30 -07:00
aio.c aio: check for multiplication overflow in do_io_submit 2010-09-26 17:21:27 -07:00
anon_inodes.c headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
attr.c truncate: new helpers 2009-09-24 08:41:47 -04:00
bad_inode.c
binfmt_aout.c Split 'flush_old_exec' into two functions 2010-02-09 04:50:49 -08:00
binfmt_elf.c Split 'flush_old_exec' into two functions 2010-02-09 04:50:49 -08:00
binfmt_elf_fdpic.c Split 'flush_old_exec' into two functions 2010-02-09 04:50:49 -08:00
binfmt_em86.c
binfmt_flat.c Split 'flush_old_exec' into two functions 2010-02-09 04:50:49 -08:00
binfmt_misc.c binfmt_misc: fix binfmt_misc priority 2010-09-20 13:17:54 -07:00
binfmt_script.c
binfmt_som.c Split 'flush_old_exec' into two functions 2010-02-09 04:50:49 -08:00
bio-integrity.c block: fix bugs in bio-integrity mempool usage 2010-02-09 04:50:58 -08:00
bio.c bio: take care not overflow page count when mapping/copying user data 2010-12-09 13:26:52 -08:00
block_dev.c blkdev: cgroup whitelist permission fix 2010-08-13 13:19:37 -07:00
buffer.c Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block 2009-09-25 09:27:30 -07:00
char_dev.c char: Mark /dev/zero and /dev/kmem as not capable of writeback 2010-09-26 17:21:26 -07:00
compat.c revert "procfs: provide stack information for threads" and its fixup commits 2010-05-26 14:29:19 -07:00
compat_binfmt_elf.c
compat_ioctl.c fs: add missing compat_ptr handling for FS_IOC_RESVSP ioctl 2009-11-12 07:25:57 -08:00
dcache.c sched: Pull up the might_sleep() check into cond_resched() 2009-07-18 15:51:44 +02:00
dcookies.c
direct-io.c
drop_caches.c sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
eventfd.c anonfd: split interface into file creation and install 2009-09-23 07:39:29 -07:00
eventpoll.c epoll: fix nested calls support 2009-06-18 13:03:41 -07:00
exec.c execve: make responsive to SIGKILL with large arguments 2010-10-28 21:44:17 -07:00
fcntl.c Fix race in tty_fasync() properly 2010-02-23 07:37:44 -08:00
fifo.c
file.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
file_table.c vfs: take f_lock on modifying f_mode after open time 2010-03-15 08:49:37 -07:00
filesystems.c
fs-writeback.c writeback: disable periodic old data writeback for !dirty_writeback_centisecs 2010-07-05 11:10:45 -07:00
fs_struct.c
generic_acl.c
inode.c vfs: optimize touch_time() too 2009-09-24 07:47:27 -04:00
internal.h fs: fix overflow in sys_mount() for in-kernel calls 2009-09-24 08:40:15 -04:00
ioctl.c __generic_block_fiemap(): fix for files bigger than 4GB 2009-11-12 07:26:01 -08:00
ioprio.c
Kconfig powerpc: Cleanup Kconfig selection of hugetlbfs support 2009-10-30 15:03:54 +11:00
Kconfig.binfmt
libfs.c wrong type for 'magic' argument in simple_fill_super() 2010-07-05 11:11:12 -07:00
locks.c const: make lock_manager_operations const 2009-09-22 07:17:25 -07:00
Makefile
mbcache.c
mpage.c
namei.c fix LOOKUP_FOLLOW on automount "symlinks" 2010-03-15 08:49:32 -07:00
namespace.c vfs: add NOFOLLOW flag to umount(2) 2010-07-05 11:11:15 -07:00
nfsctl.c
no-block.c
open.c fs: change sys_truncate length parameter type 2009-09-23 09:21:05 -07:00
pipe.c pipe: fix failure to return error code on ->confirm() 2010-11-22 10:47:34 -08:00
pnode.c
pnode.h
posix_acl.c
read_write.c vfs: remove redundant position check in do_sendfile 2009-09-24 07:47:34 -04:00
read_write.h
readdir.c
select.c headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
seq_file.c vfs: seq_file: add helpers for data filling 2009-09-24 07:47:35 -04:00
signalfd.c signalfd: fill in ssi_int for posix timers and message queues 2010-08-13 13:19:39 -07:00
splice.c splice: fix misuse of SPLICE_F_NONBLOCK 2010-08-13 13:19:35 -07:00
stack.c
stat.c Add unlocked version of inode_add_bytes() function 2010-01-06 15:05:01 -08:00
super.c vfs: get_sb_single() - do not pass options twice 2010-01-28 15:00:47 -08:00
sync.c fs/buffer.c: clean up EXPORT* macros 2009-09-23 07:39:29 -07:00
timerfd.c
utimes.c
xattr.c VFS: Factor out part of vfs_setxattr so it can be called from the SELinux hook for inode_setsecctx. 2009-09-10 10:11:22 +10:00
xattr_acl.c