On 11.03.2017 00:34, Matthew Wilcox wrote: > On Sat, Mar 11, 2017 at 12:22:12AM +0300, Alexey Khoroshilov wrote: >> 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? > > I would tend to agree. sparse warns about this, and also about two > other locking problems ... which I'm not sure are really problems so > much as missing annotations? > > mm/z3fold.c:467:35: warning: context imbalance in 'z3fold_alloc' - unexpected unlock > mm/z3fold.c:519:26: warning: context imbalance in 'z3fold_free' - different lock contexts for basic block > mm/z3fold.c:581:12: warning: context imbalance in 'z3fold_reclaim_page' - different lock contexts for basic block > I also do not see problems in z3fold_alloc() and z3fold_free(). But I am unaware of sparse annotations that can help here. -- Alexey -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>