[alsa-devel] [BUG] sound/soc/samsung: a possible sleep-in-atomic bugs in s3c_pcm_hw_params
According to sound/soc/samsung/pcm.c, the kernel module may sleep under a spinlock. The function call path is: s3c_pcm_hw_params (acquire the spinlock) clk_get_rate clk_core_get_rate clk_prepare_lock mutex_lock --> may sleep
I do not find a good way to fix it, so I only report. This possible bug is found by my static analysis tool (DSAC) and my code review.
Thanks, Jia-Ju Bai
On Tue, Dec 12, 2017 at 2:24 AM, Jia-Ju Bai baijiaju1990@163.com wrote:
According to sound/soc/samsung/pcm.c, the kernel module may sleep under a spinlock. The function call path is: s3c_pcm_hw_params (acquire the spinlock) clk_get_rate clk_core_get_rate clk_prepare_lock mutex_lock --> may sleep
I do not find a good way to fix it, so I only report. This possible bug is found by my static analysis tool (DSAC) and my code review.
Thanks for the report. Your finding looks correct, the code might sleep under spinlock.
I do not see easy solution. Maybe the readl(regs + S3C_PCM_CLKCTL) and clk_get_rate() could be moved before spinlock. The second path modifying it - s3c_pcm_set_sysclk() - is not protected by it. The spinlock is not effective around it.
Best regards, Krzysztof
participants (2)
-
Jia-Ju Bai
-
Krzysztof Kozlowski