[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201805102350.JJH73950.tVJHQLFSOMOOFF@I-love.SAKURA.ne.jp>
Date: Thu, 10 May 2018 23:50:44 +0900
From: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>
To: sergey.senozhatsky.work@...il.com, pmladek@...e.com
Cc: dvyukov@...gle.com, sergey.senozhatsky@...il.com,
syzkaller@...glegroups.com, rostedt@...dmis.org,
fengguang.wu@...el.com, linux-kernel@...r.kernel.org
Subject: Re: printk feature for syzbot?
Sergey Senozhatsky wrote:
> On (04/26/18 12:06), Petr Mladek wrote:
> >
> > > Petr, Steven, Fengguang, what do you think? Do you have any objections?
> > > Ideas?
> >
> > I wonder if we could create some mechanism that would help to extend
> > struct printk_log easier in the future.
>
> Hm, interesting idea.
>
> > I know only about crash tool implementation. It uses information provided
> > by log_buf_vmcoreinfo_setup(). The size of the structure is already
> > public. Therefore crash should be able to find all existing information
> > even if we increase the size of the structure.
> >
> > log_buf_vmcoreinfo_setup() even allows to inform about newly added
> > structure items. We could probably extend it to inform also about
> > the offset of the new optional elements.
>
> I vaguely remember that the last time Thomas Gleixner modified
> printk_log you managed to find a case that broke crash tool.
> ... Or may be I'm mistaken.
>
> > I am not sure about other tools. But I think that it should be
> > doable.
>
> Good. So there are no objections, so far.
>
> Tetsuo, Dmitry, care to send a patch?
>
> -ss
>
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.
Powered by blists - more mailing lists