提交 80503185 编写于 作者: F Frederic Weisbecker

kill-the-bkl/reiserfs: panic in case of lock imbalance

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: NFrederic 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>
上级 7e942770
...@@ -37,11 +37,10 @@ void reiserfs_write_unlock(struct super_block *s) ...@@ -37,11 +37,10 @@ void reiserfs_write_unlock(struct super_block *s)
/* /*
* Are we unlocking without even holding the lock? * Are we unlocking without even holding the lock?
* Such a situation could even raise a BUG() if we don't * Such a situation must raise a BUG() if we don't want
* want the data become corrupted * to corrupt the data.
*/ */
WARN_ONCE(sb_i->lock_owner != current, BUG_ON(sb_i->lock_owner != current);
"Superblock write lock imbalance");
if (--sb_i->lock_depth == -1) { if (--sb_i->lock_depth == -1) {
sb_i->lock_owner = NULL; sb_i->lock_owner = NULL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册