Re: [PATCH] squashfs: avoid bio_alloc() failure with 1Mbyte blocks

From: Andrew Morton
Date: Tue Aug 18 2020 - 23:13:29 EST


On Fri, 14 Aug 2020 21:30:33 -0700 Guenter Roeck <groeck@xxxxxxxxxx> wrote:

> On Fri, Aug 14, 2020 at 8:57 PM Phillip Lougher <phillip@xxxxxxxxxxxxxxx> wrote:
> >
> > This is a regression introduced by the "migrate from ll_rw_block usage
> > to BIO" patch.
> >
> > Bio_alloc() is limited to 256 pages (1 Mbyte). This can cause a
> > failure when reading 1 Mbyte block filesystems. The problem is
> > a datablock can be fully (or almost uncompressed), requiring 256
> > pages, but, because blocks are not aligned to page boundaries, it
> > may require 257 pages to read.
> >
> > Bio_kmalloc() can handle 1024 pages, and so use this for the
> > edge condition.
> >
> > Reported-by: Nicolas Prochazka <nicolas.prochazka@xxxxxxxxx>
> > Reported-by: Tomoatsu Shimada <shimada@xxxxxxxxxxx>
> > Signed-off-by: Phillip Lougher <phillip@xxxxxxxxxxxxxxx>
>
> Fixes: 93e72b3c612a ("squashfs: migrate from ll_rw_block usage to BIO")
> Reviewed-by: Guenter Roeck <groeck@xxxxxxxxxxxx>

Thanks. I added cc:stable also.