On Thu, 25 Jan 2024 at 15:37, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > It was brought to our attention that some MMC host drivers > are referencing sg_virt(sg) directly on scatterlist entries, > which will not perform buffer bouncing for CONFIG_HIGHMEM > pages that reside in highmem. > > See the following mail from Christoph and the discussion: > https://lore.kernel.org/linux-mmc/20240122073423.GA25859@xxxxxx/ > > This means that bugs with highmem pages can go unnoticed > until an actual highmem page is finally used and not bounced, > resulting in things like unpredictable file corruption. > > Attempt to fix this by amending all host controllers > calling sg_virt() for PIO to instead do proper mapping > and unmapping of the scatterlist entry, possibly bouncing > it from highmem if need be. > > More complicated patches are possible, the most obvious > to rewrite the PIO loops to use sg_miter_[start|next|stop]() > see for example mmci.c, but I leave this refactoring as > a suggestion to each device driver maintainer because I > can't really test the patches. > > All patches are compile-tested except the m68k one, > sdhci-esdhc-mcf. > > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Thanks for helping out with this! Applied for next! Kind regards Uffe > --- > Linus Walleij (7): > mmc: davinci_mmc: Map the virtual page for PIO > mmc: moxart-mmc: Map the virtual page for PIO > mmc: mvsdio: Map the virtual page for PIO > mmc: mxcmmc: Map the virtual page for PIO > mmc: omap: Map the virtual page for PIO > mmc: sdhci-esdhc-mcf: Map the virtual page for swapping > mmc: sh_mmcif: Map the virtual page for PIO > > drivers/mmc/host/davinci_mmc.c | 10 ++++++++-- > drivers/mmc/host/moxart-mmc.c | 3 ++- > drivers/mmc/host/mvsdio.c | 3 ++- > drivers/mmc/host/mxcmmc.c | 23 +++++++++++++++-------- > drivers/mmc/host/omap.c | 7 ++++++- > drivers/mmc/host/sdhci-esdhc-mcf.c | 3 ++- > drivers/mmc/host/sh_mmcif.c | 22 ++++++++++++++++++---- > 7 files changed, 53 insertions(+), 18 deletions(-) > --- > base-commit: 6613476e225e090cc9aad49be7fa504e290dd33d > change-id: 20240125-mmc-proper-kmap-f2d4cf5d1756 > > Best regards, > -- > Linus Walleij <linus.walleij@xxxxxxxxxx> >