• Andrew Morton's avatar
    dma_alloc_from_coherent(): fix fallback to generic memory · 0bef3c2d
    Andrew Morton authored
    If bitmap_find_free_region() fails and DMA_MEMORY_EXCLUSIVE is not set,
    the function will fail to write anything to *ret and will return 1.             This will cause dma_alloc_coherent() to return an uninitialised value,
    crashing the kernel, perhaps via DMA to a random address.
    
    Fix that by changing it to return zero in this case, so the caller will
    proceed to allocate the memory from the generic memory allocator.
    
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Dmitry Baryshkov <dbaryshkov@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0bef3c2d
dma-coherent.c 4.41 KB