summaryrefslogtreecommitdiffstats
path: root/mm/z3fold.c
diff options
context:
space:
mode:
authorVitaly Wool <vitalywool@gmail.com>2017-03-16 19:40:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-03-16 19:56:18 -0400
commit271df90e4e530c17f237b27034d6341cb2c2f536 (patch)
tree37c4d5e3ee0e029749d65aca37981dbe1ae93279 /mm/z3fold.c
parent69eea5a4ab9c705496e912b55a9d312325de19e6 (diff)
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/z3fold.c')
-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:
667 z3fold_page_unlock(zhdr); 667 z3fold_page_unlock(zhdr);
668 spin_lock(&pool->lock); 668 spin_lock(&pool->lock);
669 if (kref_put(&zhdr->refcount, release_z3fold_page)) { 669 if (kref_put(&zhdr->refcount, release_z3fold_page)) {
670 spin_unlock(&pool->lock);
670 atomic64_dec(&pool->pages_nr); 671 atomic64_dec(&pool->pages_nr);
671 return 0; 672 return 0;
672 } 673 }