[PATCH v1] kernel/printk: check return value of console_trylock()

Li Zhong posted 1 patch 3 years, 6 months ago
kernel/printk/printk.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH v1] kernel/printk: check return value of console_trylock()
Posted by Li Zhong 3 years, 6 months ago
Check the console_trylock() return value in case it fails.

Signed-off-by: Li Zhong <floridsleeves@gmail.com>
---
 kernel/printk/printk.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index a1a81fd9889b..2c6a0484315b 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2937,7 +2937,8 @@ void console_flush_on_panic(enum con_flush_mode mode)
 	 * context and we don't want to get preempted while flushing,
 	 * ensure may_schedule is cleared.
 	 */
-	console_trylock();
+	if (!console_trylock())
+		return;
 	console_may_schedule = 0;
 
 	if (mode == CONSOLE_REPLAY_ALL) {
-- 
2.25.1
Re: [PATCH v1] kernel/printk: check return value of console_trylock()
Posted by Sergey Senozhatsky 3 years, 6 months ago
On (22/09/16 18:58), Li Zhong wrote:
> Check the console_trylock() return value in case it fails.
[..]
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index a1a81fd9889b..2c6a0484315b 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -2937,7 +2937,8 @@ void console_flush_on_panic(enum con_flush_mode mode)
>  	 * context and we don't want to get preempted while flushing,
>  	 * ensure may_schedule is cleared.
>  	 */
> -	console_trylock();
> +	if (!console_trylock())
> +		return;

It supposed to be ignored and the comment above (in the code)
explains why: this is panic flush, we want to proceed regardless.
Re: [PATCH v1] kernel/printk: check return value of console_trylock()
Posted by Li Zhong 3 years, 6 months ago
On Sun, Sep 18, 2022 at 6:11 AM Sergey Senozhatsky
<senozhatsky@chromium.org> wrote:
>
> On (22/09/16 18:58), Li Zhong wrote:
> > Check the console_trylock() return value in case it fails.
> [..]
> > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> > index a1a81fd9889b..2c6a0484315b 100644
> > --- a/kernel/printk/printk.c
> > +++ b/kernel/printk/printk.c
> > @@ -2937,7 +2937,8 @@ void console_flush_on_panic(enum con_flush_mode mode)
> >        * context and we don't want to get preempted while flushing,
> >        * ensure may_schedule is cleared.
> >        */
> > -     console_trylock();
> > +     if (!console_trylock())
> > +             return;
>
> It supposed to be ignored and the comment above (in the code)
> explains why: this is panic flush, we want to proceed regardless.

Thanks for your explanation.