Commit 13ea55ea2017 for kernel

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

    dm pcache: fix segment info indexing

    Segment info indexing also used sizeof(struct) instead of the
    4K metadata stride, so info_index could point between slots and
    subsequent writes would advance incorrectly. Derive info_index
    from the pointer returned by the segment meta search using
    PCACHE_SEG_INFO_SIZE and advance to the next slot for future
    updates.

    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_segment.c b/drivers/md/dm-pcache/cache_segment.c
index ae57cc261422..9d92e2b067ed 100644
--- a/drivers/md/dm-pcache/cache_segment.c
+++ b/drivers/md/dm-pcache/cache_segment.c
@@ -56,7 +56,10 @@ static int cache_seg_info_load(struct pcache_cache_segment *cache_seg)
 		ret = -EIO;
 		goto out;
 	}
-	cache_seg->info_index = cache_seg_info_addr - cache_seg_info_addr_base;
+
+	cache_seg->info_index =
+		((char *)cache_seg_info_addr - (char *)cache_seg_info_addr_base) /
+		PCACHE_SEG_INFO_SIZE;
 out:
 	mutex_unlock(&cache_seg->info_lock);