On 8/8/26 10:18 PM, Runyu Xiao wrote:
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 608b617fb817..aabb9a5f85a7 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -1674,6 +1674,8 @@ static struct bio *crypt_alloc_buffer(struct dm_crypt_io 
*io, unsigned int size)
                if (!pages) {
                        crypt_free_buffer_pages(cc, clone);
                        bio_put(clone);
+                       if (unlikely(gfp_mask & __GFP_DIRECT_RECLAIM))
+                               mutex_unlock(&cc->bio_alloc_lock);
                        gfp_mask |= __GFP_DIRECT_RECLAIM;
                        order = 0;
                        goto retry;

Please refactor crypt_alloc_buffer() such that context analysis can be
enabled instead of making this function more complex. One way to do this
is by moving the crypt_alloc_buffer() code that occurs between the
mutex_lock() and mutex_unlock() calls into a helper function.

See also https://docs.kernel.org/dev-tools/context-analysis.html.

Thanks,

Bart.

Reply via email to