Re: printk feature for syzbot?
From: Sergey Senozhatsky
Date: Thu May 10 2018 - 21:45:29 EST
On (05/10/18 23:50), Tetsuo Handa wrote:
> What I meant is nothing but something like below (i.e. inject context ID before
> string to print)
>
> -sprintf(printk_buf + offset, "[ %s] %s", stamp, string_to_print);
> +cpu = smp_processor_id()
> +if (in_nmi())
> + sprintf(printk_buf + offset, "[ %s](N%u) %s", stamp, cpu, string_to_print);
> +else if (in_irq())
> + sprintf(printk_buf + offset, "[ %s](I%u) %s", stamp, cpu, string_to_print);
> +else if (in_serving_softirq())
> + sprintf(printk_buf + offset, "[ %s](S%u) %s", stamp, cpu, string_to_print);
> +else
> + sprintf(printk_buf + offset, "[ %s](%u) %s", stamp, current->pid, string_to_print);
>
> without touching any struct.
So you basically want to have one more con_msg_format_flags? Do
you want to track a context which prints out a messages or the
context which "generated" the message? A CPU/task that stores
a logbuf entry - vprintk_emit() - is not always the same as the
CPU/task that prints it to consoles - console_unlock().
-ss