Init dies, oops on reading /proc/mounts in current VS snapshot.

David Woodhouse (dwmw2@cam.ac.uk)
Wed, 05 Nov 1997 02:29:36 +0000


This is a multipart MIME message.

--==_Exmh_-15474262270
Content-Type: text/plain; charset=us-ascii

I've been suffering from this for a while. Here's the fix:

--==_Exmh_-15474262270
Content-Type: text/plain ; name="super-vger-2.1.61-diff"; charset=us-ascii
Content-Description: super-vger-2.1.61-diff
Content-Disposition: attachment; filename="super-vger-2.1.61-diff"

--- linux/fs/super.c.orig Mon Oct 27 19:21:47 1997
+++ linux/fs/super.c Wed Nov 5 02:16:06 1997
@@ -331,7 +331,8 @@
while ( tmp && len < PAGE_SIZE - 160)
{
len += sprintf( buf + len, "%s %s %s %s",
- tmp->mnt_devname, tmp->mnt_dirname, tmp->mnt_sb->s_type->name,
+ tmp->mnt_devname, tmp->mnt_dirname,
+ tmp->mnt_sb->s_type?tmp->mnt_sb->s_type->name:"BUG!",
tmp->mnt_flags & MS_RDONLY ? "ro" : "rw" );
for (fs_infop = fs_info; fs_infop->flag; fs_infop++) {
if (tmp->mnt_flags & fs_infop->flag) {
@@ -339,7 +340,7 @@
len += strlen(fs_infop->str);
}
}
- if (!strcmp("nfs", tmp->mnt_sb->s_type->name)) {
+ if (tmp->mnt_sb->s_type && !strcmp("nfs", tmp->mnt_sb->s_type->name)) {
nfss = &tmp->mnt_sb->u.nfs_sb.s_server;
if (nfss->rsize != NFS_DEF_FILE_IO_BUFFER_SIZE) {
len += sprintf(buf+len, ",rsize=%d",
@@ -800,7 +801,7 @@
{
struct dentry * dir_d = NULL;
struct super_block * sb;
- struct vfsmount * vfsmnt;
+ struct vfsmount * vfsmnt = NULL;
int error;

down(&mount_sem);
@@ -860,6 +861,8 @@

dput_and_out:
dput(dir_d);
+ if (vfsmnt)
+ remove_vfsmnt(dev);
out:
up(&mount_sem);
return error;

--==_Exmh_-15474262270--