z3fold: suspicious return with spinlock held

From: Alexey Khoroshilov
Date: Fri Mar 10 2017 - 16:22:44 EST


Hello!

z3fold_reclaim_page() contains the only return that may
leave the function with pool->lock spinlock held.

669 spin_lock(&pool->lock);
670 if (kref_put(&zhdr->refcount, release_z3fold_page)) {
671 atomic64_dec(&pool->pages_nr);
672 return 0;
673 }

May be we need spin_unlock(&pool->lock); just before return?


Found by Linux Driver Verification project (linuxtesting.org).

--
Thank you,
Alexey Khoroshilov
Linux Verification Center, ISPRAS
web: http://linuxtesting.org