linux/fs/nfs
Russell King f16c960332 NFS: mount failure causes bad page state
While testing a kernel based upon ecd744eec3
(with wrong boot arguments), I got the following bad page state entry while
NFS was trying to mount it's rootfs:

IP-Config: Complete:
      device=eth0, addr=192.168.1.101, mask=255.255.255.0, gw=255.255.255.255,
     host=192.168.1.101, domain=, nis-domain=(none),
     bootserver=192.168.1.100, rootserver=192.168.1.100, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.100
rpcbind: server 192.168.1.100 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/1 on 192.168.1.100
rpcbind: server 192.168.1.100 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.1.100 not responding, timed out
Root-NFS: Server returned error -5 while mounting /nfs/rootfs/
VFS: Unable to mount root fs via NFS, trying floppy.
Bad page state in process 'swapper'
page:c02b1260 flags:0x00000400 mapping:00000000 mapcount:0 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
[<c0023e34>] (dump_stack+0x0/0x14) from [<c0062570>] (bad_page+0x70/0xac)
[<c0062500>] (bad_page+0x0/0xac) from [<c0064914>] (free_hot_cold_page+0x80/0x178)
[<c0064894>] (free_hot_cold_page+0x0/0x178) from [<c0064a74>] (free_hot_page+0x14/0x18)
[<c0064a60>] (free_hot_page+0x0/0x18) from [<c0067078>] (put_page+0xf8/0x154)
[<c0066f80>] (put_page+0x0/0x154) from [<c007dbc8>] (kfree+0xc8/0xd0)
[<c007db00>] (kfree+0x0/0xd0) from [<c00cbb54>] (nfs_get_sb+0x230/0x710)
[<c00cb924>] (nfs_get_sb+0x0/0x710) from [<c0084334>] (vfs_kern_mount+0x58/0xac)[<c00842dc>] (vfs_kern_mount+0x0/0xac) from [<c00843c0>] (do_kern_mount+0x38/0xf4)
[<c0084388>] (do_kern_mount+0x0/0xf4) from [<c0099c7c>] (do_mount+0x1e8/0x614)
...

This seems to be caused by use of an uninitialised structure due to NULL
options being passed to nfs_validate_mount_data().  Ensure that the
parsed mount data is always initialised.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
     (Trond: added fix for the same bug in nfs4_validate_mount_data()).
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-11-26 16:24:22 -05:00
..
callback.c Freezer: make kernel threads nonfreezable by default 2007-07-17 10:23:02 -07:00
callback.h NFS: Fix more sparse warnings 2007-05-14 19:33:46 -04:00
callback_proc.c [PATCH] fs/nfs/callback* passes error values big-endian 2006-10-20 10:26:40 -07:00
callback_xdr.c NFSv4: debug print ntohl(status) in nfs client callback xdr code 2007-07-19 15:21:40 -04:00
client.c mm: bdi init hooks 2007-10-17 08:42:45 -07:00
delegation.c NFSv4: Fix an rpc_cred reference leakage in fs/nfs/delegation.c 2007-10-19 17:19:30 -04:00
delegation.h NFSv4: Use RCU to protect delegations 2007-07-10 23:40:41 -04:00
dir.c NFS: Fix a race in sillyrename 2007-10-19 17:19:16 -04:00
direct.c NFS: Fix for bug in handling of errors for O_DIRECT writes 2007-10-23 16:41:21 -07:00
file.c NFSv4: Ensure that we wait for the CLOSE request to complete 2007-10-19 17:19:25 -04:00
getroot.c NFS: Fix the ustat() regression 2007-11-17 13:08:44 -05:00
idmap.c NFS: use __set_current_state() 2007-05-09 17:58:01 -04:00
inode.c NFSv4: Ensure that we wait for the CLOSE request to complete 2007-10-19 17:19:25 -04:00
internal.h NFS: use in-kernel mount argument structure for nfsv4 mounts 2007-10-09 17:17:28 -04:00
iostat.h NFSv4: Fix an oops in nfs4_fill_super 2006-03-20 13:44:48 -05:00
Makefile [NFS] [PATCH] nfs: tiny makefile cleanup 2007-10-09 17:15:36 -04:00
mount_clnt.c NFS: Improve debugging output in NFS in-kernel mount client 2007-07-10 23:40:47 -04:00
namespace.c NFS: Fix use of cancel_delayed_work_sync in nfs_release_automount_timer 2007-09-01 10:14:36 -04:00
nfs2xdr.c SUNRPC: mark bulk read/write data in xdrbuf 2007-10-09 17:17:34 -04:00
nfs3acl.c NFS: Remove nfs_begin_data_update/nfs_end_data_update 2007-10-09 17:19:53 -04:00
nfs3proc.c NFS: Use nfs_refresh_inode() in ops that aren't expected to change the inode 2007-10-09 17:20:45 -04:00
nfs3xdr.c SUNRPC: mark bulk read/write data in xdrbuf 2007-10-09 17:17:34 -04:00
nfs4_fs.h nfs: Fix build break with CONFIG_NFS_V4=n 2007-10-19 19:27:46 -07:00
nfs4namespace.c NFSv4: /proc/mounts displays the wrong server name for referrals 2007-02-03 15:35:10 -08:00
nfs4proc.c NFSv4: Ensure that we wait for the CLOSE request to complete 2007-10-19 17:19:25 -04:00
nfs4renewd.c NFS: Replace flush_scheduled_work with cancel_work_sync() and friends 2007-08-07 16:12:50 -04:00
nfs4state.c NFSv4: Ensure that we wait for the CLOSE request to complete 2007-10-19 17:19:25 -04:00
nfs4xdr.c NFSv4: Make NFSv4 ACCESS calls return attributes too... 2007-10-09 17:18:38 -04:00
nfsroot.c Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
pagelist.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
proc.c NFSv2: Ensure that the directory metadata gets revalidated on file create 2007-10-21 13:37:02 -04:00
read.c NFS: Fix atime revalidation in read() 2007-10-09 17:19:06 -04:00
super.c NFS: mount failure causes bad page state 2007-11-26 16:24:22 -05:00
symlink.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sysctl.c [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
unlink.c NFS: Fix a typo in nfs_call_unlink() 2007-10-21 13:37:07 -04:00
write.c NFS: Fix a writeback race... 2007-10-19 17:18:57 -04:00