]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iomap: prevent ioend merge when io_private differs
authorZhang Yi <yi.zhang@huawei.com>
Mon, 13 Jul 2026 07:42:06 +0000 (15:42 +0800)
committerChristian Brauner <brauner@kernel.org>
Thu, 23 Jul 2026 09:28:47 +0000 (11:28 +0200)
Different io_private values indicate distinct completion contexts that
must not be merged together, as this could leak or corrupt the private
data associated with each ioend.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Link: https://patch.msgid.link/20260713074206.1768006-1-yi.zhang@huaweicloud.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/iomap/ioend.c

index 0565328764c175308a0d62f9d8eb6cf3b57b7cb8..30468d51b5ad7a86d160204d21acfb595a02ed62 100644 (file)
@@ -385,6 +385,8 @@ static bool iomap_ioend_can_merge(struct iomap_ioend *ioend,
 
        if (ioend->io_bio.bi_status != next->io_bio.bi_status)
                return false;
+       if (ioend->io_private != next->io_private)
+               return false;
        if (next->io_flags & IOMAP_IOEND_BOUNDARY)
                return false;
        if ((ioend->io_flags & IOMAP_IOEND_NOMERGE_FLAGS) !=