diff options
author | Andrea Righi <andrea@betterlinux.com> | 2012-02-20 12:11:49 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-24 19:59:59 (GMT) |
commit | cfbc6a92212e74b07aa76c9e2f20c542e36077fb (patch) | |
tree | 65f1f8fc6817dd0c0c0a626b437d46b1ee826671 /drivers/staging/et131x | |
parent | fc7e2a57e8406469785131ee0ed72c9243d8b306 (diff) | |
download | linux-fsl-qoriq-cfbc6a92212e74b07aa76c9e2f20c542e36077fb.tar.xz |
staging: zcache: avoid AB-BA deadlock condition
Commit 9256a47 fixed a deadlock condition, being sure that the buddy
list spinlock is always taken before the page spinlock.
However in zbud_free_and_delist() locking order is the opposite
(page lock -> list lock).
Possible unsafe locking scenario (reported by lockdep):
CPU0 CPU1
---- ----
lock(&(&zbpg->lock)->rlock);
lock(zbud_budlists_spinlock);
lock(&(&zbpg->lock)->rlock);
lock(zbud_budlists_spinlock);
Fix by grabbing the locks in opposite order in zbud_free_and_delist().
Signed-off-by: Andrea Righi <andrea@betterlinux.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/et131x')
0 files changed, 0 insertions, 0 deletions