On Mon, 9 Oct 2017 09:29:17 +0800 Jia-Ju Bai <baijiaju1990@xxxxxxx> wrote: > According to pcmcia.c, the driver may sleep under a spinlock. > The function call paths are: > ssb_pcmcia_read8 (acquire the spinlock) > select_core_and_segment > ssb_pcmcia_switch_segment > ssb_pcmcia_cfg_write > pcmcia_write_config_byte > pcmcia_access_config (drivers/pcmcia/pcmcia_resource.c) > mutex_lock --> may sleep > > ssb_pcmcia_read8 (acquire the spinlock) > select_core_and_segment > ssb_pcmcia_switch_segment > sssb_pcmcia_cfg_read > pcmcia_read_config_byte > pcmcia_access_config (drivers/pcmcia/pcmcia_resource.c) > mutex_lock --> may sleep > > A possible fix is to use spinlock instead of mutex lock in > pcmcia_access_config in drivers/pcmcia/pcmcia_resource.c. > > These bugs are found by my static analysis tool and my code review. Thanks for scanning and your resulting bug notification. I currently don't have the hardware at hand to develop and test a proper fix for this. That said, I'm not so sure anymore why bar_lock is a spinlock instead of a mutex. It might be possible to convert this to mutex. I will try to look into this. -- Michael
Attachment:
pgppMtbaXim1q.pgp
Description: OpenPGP digital signature