Re: [PATCH v2] erofs: fix folio reuse from a different address_space in erofs_bread()

From: Gao Xiang

Date: Fri Oct 02 2026 - 12:02:14 EST


On Thu, Oct 01, 2026 at 02:01:31PM +0800, Binglei Wang wrote:
> erofs_bread() reuses a cached folio on page index match without
> checking folio->mapping.
>
> xattr.c calls erofs_init_metabuf() twice on the same buffer without
> erofs_put_metabuf(); the two in_metabox sources differ, so buf->mapping
> can switch while buf->page still belongs to the old address_space.
> The next erofs_bread() then reads the wrong mapping, dropping shared
> xattrs with METABOX.
>
> We require folio->mapping == buf->mapping in the reuse check; otherwise
> drop the cached folio and re-read via the slow path.
>
> Fixes: 414091322c63 ("erofs: implement metadata compression")
> Cc: Bo Liu (OpenAnolis) <liubo03@xxxxxxxxxx>
> Signed-off-by: Binglei Wang <l3b2w1@xxxxxxxxx>

I applied this patch with the updated subject:

erofs: fix xattrs handling when metadata compression is used

Reviewed-by: Gao Xiang <xiang@xxxxxxxxxx>

Thanks,
Gao Xiang