• Lad, Prabhakar's avatar
    lib/genalloc.c: add check gen_pool_dma_alloc() if dma pointer is not NULL · 0368dfd0
    Lad, Prabhakar authored
    In the gen_pool_dma_alloc() the dma pointer can be NULL and while
    assigning gen_pool_virt_to_phys(pool, vaddr) to dma caused the following
    crash on da850 evm:
    
       Unable to handle kernel NULL pointer dereference at virtual address 00000000
       Internal error: Oops: 805 [#1] PREEMPT ARM
       Modules linked in:
       CPU: 0 PID: 1 Comm: swapper Tainted: G        W    3.13.0-rc1-00001-g0609e45-dirty #5
       task: c4830000 ti: c4832000 task.ti: c4832000
       PC is at gen_pool_dma_alloc+0x30/0x3c
       LR is at gen_pool_virt_to_phys+0x74/0x80
       Process swapper, call trace:
         gen_pool_dma_alloc+0x30/0x3c
         davinci_pm_probe+0x40/0xa8
         platform_drv_probe+0x1c/0x4c
         driver_probe_device+0x98/0x22c
         __driver_attach+0x8c/0x90
         bus_for_each_dev+0x6c/0x8c
         bus_add_driver+0x124/0x1d4
         driver_register+0x78/0xf8
         platform_driver_probe+0x20/0xa4
         davinci_init_late+0xc/0x14
         init_machine_late+0x1c/0x28
         do_one_initcall+0x34/0x15c
         kernel_init_freeable+0xe4/0x1ac
         kernel_init+0x8/0xec
    
    This patch fixes the above.
    
    [akpm@linux-foundation.org: update kerneldoc]
    Signed-off-by: default avatarLad, Prabhakar <prabhakar.csengg@gmail.com>
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: Nicolin Chen <b42378@freescale.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Sachin Kamat <sachin.kamat@linaro.org>
    Cc: <stable@vger.kernel.org>	[3.13.x]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0368dfd0
genalloc.c 16.3 KB