• Jacopo Mondi's avatar
    sh: mm: Fix unprotected access to struct device · b9826a49
    Jacopo Mondi authored
    With commit ce883130 ("arch/sh: make the DMA mapping
    operations observe dev->dma_pfn_offset") the generic DMA allocation
    function on which the SH 'dma_alloc_coherent()' function relies on,
    accesses the 'dma_pfn_offset' field of struct device.
    
    Unfortunately the 'dma_generic_alloc_coherent()' function is called from
    several places with a NULL struct device argument, halting the CPU
    during the boot process.
    
    This patch fixes the issue by protecting access to dev->dma_pfn_offset,
    with a trivial check for validity. It also passes a valid 'struct device'
    in the 'platform_resource_setup_memory()' function which is the main user
    of 'dma_alloc_coherent()', and inserts a WARN_ON() check to remind to future
    (and existing) bogus users of this function to provide a valid 'struct device'
    whenever possible.
    
    Fixes: ce883130 ("arch/sh: make the DMA mapping operations observe dev->dma_pfn_offset")
    Signed-off-by: default avatarJacopo Mondi <jacopo+renesas@jmondi.org>
    Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: default avatarRich Felker <dalias@libc.org>
    b9826a49
consistent.c 3.75 KB