summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorVitaly Wool <vitalywool@gmail.com>2017-03-17 00:40:19 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2017-03-17 00:56:18 +0100
commit271df90e4e530c17f237b27034d6341cb2c2f536 (patch)
tree37c4d5e3ee0e029749d65aca37981dbe1ae93279 /mm
parentMerge branch 'for-linus' of git://git.kernel.dk/linux-block (diff)
downloadlinux-271df90e4e530c17f237b27034d6341cb2c2f536.tar.xz
linux-271df90e4e530c17f237b27034d6341cb2c2f536.zip
z3fold: fix spinlock unlocking in page reclaim
Commmit 5a27aa822029 ("z3fold: add kref refcounting") introduced a bug in z3fold_reclaim_page() with function exit that may leave pool->lock spinlock held. Here comes the trivial fix. Fixes: 5a27aa822029 ("z3fold: add kref refcounting") Link: http://lkml.kernel.org/r/20170311222239.7b83d8e7ef1914e05497649f@gmail.com Reported-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: Vitaly Wool <vitalywool@gmail.com> Cc: Dan Streetman <ddstreet@ieee.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/z3fold.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/z3fold.c b/mm/z3fold.c
index 8970a2fd3b1a..f9492bccfd79 100644
--- a/mm/z3fold.c
+++ b/mm/z3fold.c
@@ -667,6 +667,7 @@ next:
z3fold_page_unlock(zhdr);
spin_lock(&pool->lock);
if (kref_put(&zhdr->refcount, release_z3fold_page)) {
+ spin_unlock(&pool->lock);
atomic64_dec(&pool->pages_nr);
return 0;
}