2022-09-17 02:37:21

by Li Zhong

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

Check the console_trylock() return value in case it fails.

Signed-off-by: Li Zhong <[email protected]>
---
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


2022-09-18 13:43:47

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: [PATCH v1] kernel/printk: check return value of console_trylock()

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.

2022-09-19 23:19:35

by Li Zhong

[permalink] [raw]
Subject: Re: [PATCH v1] kernel/printk: check return value of console_trylock()

On Sun, Sep 18, 2022 at 6:11 AM Sergey Senozhatsky
<[email protected]> 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.