Re: [PATCH printk 3/5] printk: use buffer pool for sprint buffers

From: Sergey Senozhatsky
Date: Wed Sep 23 2020 - 21:21:40 EST


On (20/09/22 17:44), John Ogness wrote:
[..]
> int vprintk_store(int facility, int level,
> const struct dev_printk_info *dev_info,
> const char *fmt, va_list args)
> {
> - static char textbuf[LOG_LINE_MAX];
> - char *text = textbuf;
> size_t text_len;
> enum log_flags lflags = 0;
> + unsigned long irqflags;
> + int sprint_id;
> + char *text;
> + int ret;
> +
> + text = get_sprint_buf(&sprint_id, &irqflags);
> + if (WARN_ON_ONCE(!text))
> + return 0;

So we failed to get the buffer. How likely that this recursive
WARN_ON_ONCE()->printk()->get_sprint_buf() will be able to get one?
I would rather expect that we will entirely lose WARN_ON_ONCE().

-ss