Messages in this thread | | | From | Jia-Ju Bai <> | Subject | Can printk() sleep at runtime? | Date | Thu, 31 May 2018 17:08:49 +0800 |
| |
Hello,
I write a static analysis tool (DSAC), and it finds that printk can sleep. According to this finding, there is an example bug in drivers/pci/pci.c in Linux-4.16.7.
Here is the call path for this bug. Please look at it *from the bottom up*.
========== BUG ========== [FUNC] __might_sleep kernel/locking/mutex.c: 747: __might_sleep in __mutex_lock_common kernel/locking/mutex.c: 893: __mutex_lock_common in __mutex_lock kernel/locking/mutex.c: 908: __mutex_lock in mutex_lock_nested drivers/clk/clk.c, 123: mutex_lock_nested in clk_prepare_lock drivers/clk/clk.c, 1369: clk_prepare_lock in clk_core_get_rate drivers/clk/clk.c, 1393: clk_core_get_rate in clk_get_rate lib/vsprintf.c, 1450: clk_get_rate in clock lib/vsprintf.c, 1944: clock in pointer lib/vsprintf.c, 2286: pointer in vsnprintf lib/vsprintf.c, 2385: vsnprintf in vscnprintf kernel/printk/printk.c, 1853: vscnprintf in vprintk_emit kernel/printk/printk.c, 1947: vprintk_emit in vprintk_default kernel/printk/printk_safe.c, 379: vprintk_default in vprintk_func kernel/printk/printk.c, 1980: vprintk_func in printk drivers/pci/pci.c, 5364: printk in pci_specified_resource_alignment drivers/pci/pci.c, 5313: spin_lock in pci_specified_resource_alignment
In fact, I suspect that my report is false, because I always have an impression that printk() cannot sleep. But according to the call path, I cannot find where I make the mistake...
So could someone please help me to point the mistake?
Best wishes, Jia-Ju Bai
| |