squashfs: fix cache race with migration
authorVincent Whitchurch <vincent.whitchurch@axis.com>
Thu, 29 Jun 2023 14:17:57 +0000 (16:17 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 8 Jul 2023 16:29:30 +0000 (09:29 -0700)
commit08bab74ae653b57bb2bfcec7d499bfe7ff0efe4f
tree3c9262c96a5067ca13b7ef83e8c251e80a8d0041
parent191fcdb6c9cf8b738b1628cbcf3af63d545c825c
squashfs: fix cache race with migration

Migration replaces the page in the mapping before copying the contents and
the flags over from the old page, so check that the page in the page cache
is really up to date before using it.  Without this, stressing squashfs
reads with parallel compaction sometimes results in squashfs reporting
data corruption.

Link: https://lkml.kernel.org/r/20230629-squashfs-cache-migration-v1-1-d50ebe55099d@axis.com
Fixes: e994f5b677ee ("squashfs: cache partial compressed blocks")
Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Phillip Lougher <phillip@squashfs.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/squashfs/block.c