[PATCH] vxfs fix

Andries.Brouwer@cwi.nl
Wed, 1 Aug 2001 21:03:20 GMT


Dear Linus, Alan, Al, Christoph, all,

If one mounts without specifying a type, mount will try
all available types. After having tried vxfs the next type
will cause
set_blocksize: b_count 1 ...
since vxfs forgets to free a block.
The patch below adds the missing brelse().
(In fact there are more resources that are never freed there -
maybe the maintainer can have a look some time -
I only added a comment.)

When mount continues to try all types, it may try V7.
That always succeeds, there is no test for magic or so,
and after garbage has been mounted as a V7 filesystem,
the kernel crashes or hangs or fails in other sad ways.
Have not tried to debug.

Andries

--- ../linux-2.4.7/linux/fs/freevxfs/vxfs_super.c Sat Jul 28 17:08:46 2001
+++ linux/fs/freevxfs/vxfs_super.c Wed Aug 1 22:41:24 2001
@@ -178,7 +178,8 @@
}

if (rsbp->vs_version < 2 || rsbp->vs_version > 4) {
- printk(KERN_NOTICE "vxfs: unsupported VxFS version (%d)\n", rsbp->vs_version);
+ printk(KERN_NOTICE "vxfs: unsupported VxFS version (%d)\n",
+ rsbp->vs_version);
goto out;
}

@@ -221,6 +222,7 @@
if (vxfs_read_fshead(sbp)) {
printk(KERN_WARNING "vxfs: unable to read fshead\n");
return NULL;
+ /* BUG: lots of gets not matched by puts here */
}

sbp->s_op = &vxfs_super_ops;
@@ -229,6 +231,7 @@

printk(KERN_WARNING "vxfs: unable to get root dentry.\n");
out:
+ brelse(bp);
kfree(infp);
return NULL;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/