Re: BUG?: 2.4.5 breaks reiserfs (kernel BUG)

From: Alexander Viro (viro@math.psu.edu)
Date: Sun May 27 2001 - 17:22:23 EST


On Sun, 27 May 2001, Bjerkeset, Svein Olav wrote:

> Hi,
>
> Today I downloaded kernel 2.4.5 and compiled it. The kernel worked fine
> until
> I tried to halt the computer. When trying to unmount the reiserfs
> filesystems,
> the system freezes with the following output:
>
> journal_begin called without kernel lock held
> kernel BUG at journal.c:423!

        Yes. My fault - badly merged patch in -pre6, actually.
Details:
        * kill_super() gets called without BKL, but doesn't grab BKL around
the calls of ->write_super() and ->put_super()
        * by the time when it calls these methods filesystem is quiet. I.e.
nothing else has a chance to touch its data structures. So actually only
reiserfs (which checks that we hold BKL) had noticed.
        * It _is_ a bug - changing locking rules is for 2.5.

Fix:
--- fs/super.c Fri May 25 21:51:14 2001
+++ fs/super.c Sun May 27 00:21:53 2001
@@ -873,6 +873,7 @@
         }
         spin_unlock(&dcache_lock);
         down_write(&sb->s_umount);
+ lock_kernel();
         sb->s_root = NULL;
         /* Need to clean after the sucker */
         if (fs->fs_flags & FS_LITTER)
@@ -901,6 +902,7 @@
         put_filesystem(fs);
         sb->s_type = NULL;
         unlock_super(sb);
+ unlock_kernel();
         up_write(&sb->s_umount);
         if (bdev) {
                 blkdev_put(bdev, BDEV_FS);

-
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/



This archive was generated by hypermail 2b29 : Thu May 31 2001 - 21:00:34 EST