On 2022-05-02, Petr Mladek <pmladek@xxxxxxxx> wrote: >> My proposal would be to fix the tracepoint like so: >> >> | --- a/kernel/printk/printk.c >> | +++ b/kernel/printk/printk.c >> | @@ -2002,8 +2002,6 @@ static void call_console_driver(struct console *con, const char *text, size_t le >> | { >> | size_t dropped_len; >> | >> | - trace_console_rcuidle(text, len); >> | - >> | if (con->dropped && dropped_text) { >> | dropped_len = snprintf(dropped_text, DROPPED_TEXT_MAX, >> | "** %lu printk messages dropped **\n", >> | @@ -2178,6 +2176,8 @@ static u16 printk_sprint(char *text, u16 size, int facility, >> | } >> | } >> | >> | + trace_console_rcuidle(text, text_len); >> | + >> | return text_len; >> | } >> >> This fixes the KFENCE and KCSAN tests. >> >> Unless I hear objections, I'll prepare a patch explaining why we need to >> fix the tracepoint. > > It makes perfect sense to me. This is the easiest place for it. However, it should be clear that in the context of trace_console_rcuidle(), the message is not yet visible to any readers. The message _will_ get committed and definitely _will_ become visible at some point. But it is not (yet) visible at _this_ point. Maybe that is OK for what it is being used for. If trace_console_rcuidle() must be called at the point of visibility for readers, it becomes more complicated. John