Re: [BUG] drivers/gpio: some possible sleep-in-atomic bugs
On 2017-12-12 04:59, Jia-Ju Bai wrote: According to drivers/gpio/gpio-grgpio.c, the kernel module may sleep under a spinlock. The function call paths are: grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister gpiod_free __gpiod_free gpiod_unexport device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) irq_domain_remove mutex_lock --> may sleep grgpio_irq_map (acquire the spinlock) request_irq --> may sleep grgpio_irq_unmap (acquire the spinlock) free_irq --> may sleep I do not find a good way to fix them, so I only report. These possible bugs is found by my static analysis tool (DSAC) and checked by my code review. Hi! Thank you for reporting this. I will take a look at it. -- Best Regards, Andreas Larsson
Re: [BUG] drivers/gpio: some possible sleep-in-atomic bugs
On 2017-12-12 04:59, Jia-Ju Bai wrote: According to drivers/gpio/gpio-grgpio.c, the kernel module may sleep under a spinlock. The function call paths are: grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister gpiod_free __gpiod_free gpiod_unexport device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) irq_domain_remove mutex_lock --> may sleep grgpio_irq_map (acquire the spinlock) request_irq --> may sleep grgpio_irq_unmap (acquire the spinlock) free_irq --> may sleep I do not find a good way to fix them, so I only report. These possible bugs is found by my static analysis tool (DSAC) and checked by my code review. Hi! Thank you for reporting this. I will take a look at it. -- Best Regards, Andreas Larsson
[BUG] drivers/gpio: some possible sleep-in-atomic bugs
According to drivers/gpio/gpio-grgpio.c, the kernel module may sleep under a spinlock. The function call paths are: grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister gpiod_free __gpiod_free gpiod_unexport device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) irq_domain_remove mutex_lock --> may sleep grgpio_irq_map (acquire the spinlock) request_irq --> may sleep grgpio_irq_unmap (acquire the spinlock) free_irq --> may sleep I do not find a good way to fix them, so I only report. These possible bugs is found by my static analysis tool (DSAC) and checked by my code review. Thanks, Jia-Ju Bai
[BUG] drivers/gpio: some possible sleep-in-atomic bugs
According to drivers/gpio/gpio-grgpio.c, the kernel module may sleep under a spinlock. The function call paths are: grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) gpiochip_remove gpiochip_sysfs_unregister gpiod_free __gpiod_free gpiod_unexport device_unregister --> may sleep mutex_lock --> may sleep grgpio_remove (acquire the spinlock) irq_domain_remove mutex_lock --> may sleep grgpio_irq_map (acquire the spinlock) request_irq --> may sleep grgpio_irq_unmap (acquire the spinlock) free_irq --> may sleep I do not find a good way to fix them, so I only report. These possible bugs is found by my static analysis tool (DSAC) and checked by my code review. Thanks, Jia-Ju Bai