Commit 4b22d0801fad for kernel

commit 4b22d0801fadfcae2e106e6ba32e49439c7c7ebf
Author: Genjian Zhang <zhanggenjian@kylinos.cn>
Date:   Sat Jul 11 18:05:26 2026 +0800

    dm thin metadata: fix superblock refcount leak on snapshot shadow failure

    __reserve_metadata_snap() increments THIN_SUPERBLOCK_LOCATION in the
    metadata space map before shadowing it. When dm_tm_shadow_block()
    fails, a reference is leaked in the metadata space map.

    Fix by adding the missing dm_sm_dec_block().

    Signed-off-by: Genjian Zhang <zhanggenjian@kylinos.cn>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Fixes: cc8394d86f04 ("dm thin: provide userspace access to pool metadata")
    Cc: stable@vger.kernel.org

diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
index a010ff1e5c92..e60e1326376a 100644
--- a/drivers/md/dm-thin-metadata.c
+++ b/drivers/md/dm-thin-metadata.c
@@ -1362,8 +1362,10 @@ static int __reserve_metadata_snap(struct dm_pool_metadata *pmd)
 	dm_sm_inc_block(pmd->metadata_sm, THIN_SUPERBLOCK_LOCATION);
 	r = dm_tm_shadow_block(pmd->tm, THIN_SUPERBLOCK_LOCATION,
 			       &sb_validator, &copy, &inc);
-	if (r)
+	if (r) {
+		dm_sm_dec_block(pmd->metadata_sm, THIN_SUPERBLOCK_LOCATION);
 		return r;
+	}

 	BUG_ON(!inc);