• Charles Keepax's avatar
    spi: spi-mxs: Fix mapping from vmalloc-ed buffer to scatter list · 9e8987ac
    Charles Keepax authored
    We can only use page_address on memory that has been mapped using kmap,
    when the buffer passed to the SPI has been allocated by vmalloc the page
    has not necessarily been mapped through kmap. This means sometimes
    page_address will return NULL causing the pointer we pass to sg_init_one
    to be invalid. Currently, this issue doesn't show up on the MXS
    architecture as the defconfig defines CONFIG_HIGHMEM=n which means all
    pages are mapped. For the sake of robustness though it is best to
    correct the issue.
    
    As we only call page_address so that we can pass a virtual address to
    sg_init_one which will eventually call virt_to_page on it, fix this
    by calling sg_set_page directly rather then relying on the sg_init_one
    helper.
    
    Note this patch is only build tested as I don't have an MXS system to
    test on.
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    9e8987ac
spi-mxs.c 14.3 KB