Commit ee7633178321 for kernel

commit ee7633178321f5d983db3adfdea9322456cfdaaa
Author: Li Chen <chenl311@chinatelecom.cn>
Date:   Fri Dec 5 05:46:19 2025 +0000

    dm pcache: fix cache info indexing

    The on-media cache_info index used sizeof(struct) instead of the
    4K metadata stride, so gc_percent updates from dmsetup message
    were written between slots and lost after reboot. Use
    PCACHE_CACHE_INFO_SIZE in get_cache_info_addr() and align
    info_index with the slot returned by pcache_meta_find_latest().

    Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
    Signed-off-by: Dongsheng Yang <dongsheng.yang@linux.dev>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Zheng Gu <cengku@gmail.com>
    Cc: stable@vger.kernel.org      # 6.18

diff --git a/drivers/md/dm-pcache/cache.c b/drivers/md/dm-pcache/cache.c
index d93aeb67c492..18b00f6f4fd3 100644
--- a/drivers/md/dm-pcache/cache.c
+++ b/drivers/md/dm-pcache/cache.c
@@ -10,7 +10,8 @@ struct kmem_cache *key_cache;

 static inline struct pcache_cache_info *get_cache_info_addr(struct pcache_cache *cache)
 {
-	return cache->cache_info_addr + cache->info_index;
+	return (struct pcache_cache_info *)((char *)cache->cache_info_addr +
+						(size_t)cache->info_index * PCACHE_CACHE_INFO_SIZE);
 }

 static void cache_info_write(struct pcache_cache *cache)
@@ -49,6 +50,8 @@ static int cache_info_init(struct pcache_cache *cache, struct pcache_cache_optio
 			return -EINVAL;
 		}

+		cache->info_index = ((char *)cache_info_addr - (char *)cache->cache_info_addr) / PCACHE_CACHE_INFO_SIZE;
+
 		return 0;
 	}