mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
spi_gpio: fix sleep in atomic
fix this bug: BUG: sleeping function called from invalid context at mm/slab.c:3018 in_atomic(): 1, irqs_disabled(): 128, pid: 1, name: swapper 1 lock held by swapper/1: #0: (&gpio_lock_class#2){......}, at: [<c049d4a0>] __setup_irq+0xe4/0x320 [<c044f108>] (unwind_backtrace+0x0/0xdc) from [<c06f3ac0>] (dump_stack+0x18/0x1c) [<c06f3ac0>] (dump_stack+0x18/0x1c) from [<c045cc8c>] (__might_sleep+0x124/0x144) [<c045cc8c>] (__might_sleep+0x124/0x144) from [<c04c7208>] (kmem_cache_alloc+0x44/0x62c) [<c04c7208>] (kmem_cache_alloc+0x44/0x62c) from [<c05b7bec>] (spi_gpio_irq_set_type+0x2c/0xac) [<c05b7bec>] (spi_gpio_irq_set_type+0x2c/0xac) from [<c049cec4>] (__irq_set_trigger+0x3c/0x8c) [<c049cec4>] (__irq_set_trigger+0x3c/0x8c) from [<c049d514>] (__setup_irq+0x158/0x320) [<c049d514>] (__setup_irq+0x158/0x320) from [<c049d7c0>] (request_threaded_irq+0xe4/0x130) [<c049d7c0>] (request_threaded_irq+0xe4/0x130) from [<c05ba708>] (rockchip_headsetobserve_probe+0xdc/0x114) [<c05ba708>] (rockchip_headsetobserve_probe+0xdc/0x114) from [<c059d290>] (platform_drv_probe+0x20/0x24) [<c059d290>] (platform_drv_probe+0x20/0x24) from [<c059c294>] (driver_probe_device+0xb0/0x160) [<c059c294>] (driver_probe_device+0xb0/0x160) from [<c059c3ac>] (__driver_attach+0x68/0x8c) [<c059c3ac>] (__driver_attach+0x68/0x8c) from [<c059ba84>] (bus_for_each_dev+0x54/0x94) [<c059ba84>] (bus_for_each_dev+0x54/0x94) from [<c059c0f8>] (driver_attach+0x20/0x28) [<c059c0f8>] (driver_attach+0x20/0x28) from [<c059b350>] (bus_add_driver+0xa8/0x240) [<c059b350>] (bus_add_driver+0xa8/0x240) from [<c059c6c0>] (driver_register+0xb0/0x140) [<c059c6c0>] (driver_register+0xb0/0x140) from [<c059d6e4>] (platform_driver_register+0x4c/0x60) [<c059d6e4>] (platform_driver_register+0x4c/0x60) from [<c0418bd0>] (rockchip_headsetobserve_init+0x14/0x20) [<c0418bd0>] (rockchip_headsetobserve_init+0x14/0x20) from [<c0449364>] (do_one_initcall+0x64/0x1c0) [<c0449364>] (do_one_initcall+0x64/0x1c0) from [<c0408474>] (kernel_init+0xa4/0x11c) [<c0408474>] (kernel_init+0xa4/0x11c) from [<c044a8fc>] (kernel_thread_exit+0x0/0x8)
This commit is contained in:
@@ -1050,7 +1050,7 @@ static int spi_gpio_irq_set_type(unsigned int irq, unsigned int type)
|
||||
struct spi_fpga_port *port = pFpgaPort;
|
||||
struct spi_gpio_irq_transfer *t;
|
||||
unsigned long flags;
|
||||
t = kzalloc(sizeof(struct spi_gpio_irq_transfer), GFP_KERNEL);
|
||||
t = kzalloc(sizeof(struct spi_gpio_irq_transfer), GFP_ATOMIC);
|
||||
if (!t)
|
||||
{
|
||||
printk("err:%s:ENOMEM\n",__FUNCTION__);
|
||||
|
||||
Reference in New Issue
Block a user