kill-the-bkl/reiserfs: panic in case of lock imbalance
authorFrederic Weisbecker <fweisbec@gmail.com>
Tue, 25 Aug 2009 02:18:06 +0000 (04:18 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Mon, 14 Sep 2009 05:18:30 +0000 (07:18 +0200)
Until now, trying to unlock the reiserfs write lock whereas the current
task doesn't hold it lead to a simple warning.
We should actually warn and panic in this case to avoid the user datas
to reach an unstable state.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jeff Mahoney <jeffm@suse.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Laurent Riffard <laurent.riffard@free.fr>
fs/reiserfs/lock.c

index cb1bba3..ee2cfc0 100644 (file)
@@ -37,11 +37,10 @@ void reiserfs_write_unlock(struct super_block *s)
 
        /*
         * Are we unlocking without even holding the lock?
-        * Such a situation could even raise a BUG() if we don't
-        * want the data become corrupted
+        * Such a situation must raise a BUG() if we don't want
+        * to corrupt the data.
         */
-       WARN_ONCE(sb_i->lock_owner != current,
-                 "Superblock write lock imbalance");
+       BUG_ON(sb_i->lock_owner != current);
 
        if (--sb_i->lock_depth == -1) {
                sb_i->lock_owner = NULL;