mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [BUG] sound/soc/samsung: a possible sleep-in-atomic bugs in s3c_pcm_hw_params
@ 2017-12-12  1:24 Jia-Ju Bai
  2017-12-14 10:11 ` Krzysztof Kozlowski
  0 siblings, 1 reply; 2+ messages in thread
From: Jia-Ju Bai @ 2017-12-12  1:24 UTC (permalink / raw)
  To: krzk, sbkim73, s.nawrocki, lgirdwood, broonie, perex, tiwai
  Cc: alsa-devel, Linux Kernel Mailing List

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [BUG] sound/soc/samsung: a possible sleep-in-atomic bugs in s3c_pcm_hw_params
  2017-12-12  1:24 [BUG] sound/soc/samsung: a possible sleep-in-atomic bugs in s3c_pcm_hw_params Jia-Ju Bai
@ 2017-12-14 10:11 ` Krzysztof Kozlowski
  0 siblings, 0 replies; 2+ messages in thread
From: Krzysztof Kozlowski @ 2017-12-14 10:11 UTC (permalink / raw)
  To: Jia-Ju Bai
  Cc: sbkim73, Sylwester Nawrocki, lgirdwood, broonie, perex, tiwai,
	alsa-devel, Linux Kernel Mailing List

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-12-14 10:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-12  1:24 [BUG] sound/soc/samsung: a possible sleep-in-atomic bugs in s3c_pcm_hw_params Jia-Ju Bai
2017-12-14 10:11 ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®