Use guard() to manage locking and unlocking a folio, thus avoiding the use of goto unlock code. Remove the unlock_page label, and return directly when an error occurs, allowing the compiler to release the folio's lock. Signed-off-by: Li Zetao <lizetao1@xxxxxxxxxx> --- fs/buffer.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 45eb06cb1a4e..77ab93531a33 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1740,11 +1740,11 @@ void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len) * to pin buffers here since we can afford to sleep and * it scales better than a global spinlock lock. */ - folio_lock(folio); + guard(folio)(folio); /* Recheck when the folio is locked which pins bhs */ head = folio_buffers(folio); if (!head) - goto unlock_page; + continue; bh = head; do { if (!buffer_mapped(bh) || (bh->b_blocknr < block)) @@ -1757,8 +1757,6 @@ void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len) next: bh = bh->b_this_page; } while (bh != head); -unlock_page: - folio_unlock(folio); } folio_batch_release(&fbatch); cond_resched(); -- 2.34.1