Re: [PATCH] Bug in do_mount()

2001-03-24 Thread Alexander Viro
On Sat, 24 Mar 2001, Jorgen Cederlof wrote: > > kill_super() releases the reference stored in ->s_type (created > > by get_sb_...()). If superblock stays alive you should not release it. > > get_sb_...() will do get_filesystem() even if superblock stays alive. Sigh... I see what happens, and

Re: [PATCH] Bug in do_mount()

2001-03-24 Thread Jorgen Cederlof
> > if (list_empty(&sb->s_mounts)) > > kill_super(sb, 0); > > + else > > + put_filesystem(fstype); > > goto unlock_out; > Reference acquired by get_fs_type() is > released by put_filesystem() (near fs_out), _NOT_ by kill_super(). Yes. > kill_super() re

Re: [PATCH] Bug in do_mount()

2001-03-24 Thread Alexander Viro
On Sat, 24 Mar 2001, Jorgen Cederlof wrote: > if (list_empty(&sb->s_mounts)) > kill_super(sb, 0); > + else > + put_filesystem(fstype); > goto unlock_out; That's completely wrong. Reference acquired by get_fs_type() is released by put_filesystem() (near

[PATCH] Bug in do_mount()

2001-03-24 Thread Jorgen Cederlof
do_mount() can sometimes fail to mount a filesystem, but still increment the filesystem module count. This patch against 2.4.2 should fix the problem. Jörgen --- fs/super.c.orig Sun Mar 11 20:25:26 2001 +++ fs/super.c Sun Mar 11 20:05:27 2001 @@ -1414,6 +1414,8 @@ fail: if