lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 23 Jul 2020 16:08:44 +0206
From:   John Ogness <john.ogness@...utronix.de>
To:     Steven Rostedt <rostedt@...dmis.org>
Cc:     Vincent Whitchurch <vincent.whitchurch@...s.com>,
        jbaron@...mai.com, mingo@...hat.com, kernel@...s.com,
        corbet@....net, linux-kernel@...r.kernel.org,
        Petr Mladek <pmladek@...e.com>,
        Sergey Senozhatsky <sergey.senozhatsky@...il.com>
Subject: Re: [PATCH] dynamic debug: allow printing to trace event

On 2020-07-22, Steven Rostedt <rostedt@...dmis.org> wrote:
>>> +static void dynamic_printk(unsigned int flags, const char *fmt, ...)
>>> +{
>>> +	if (flags & _DPRINTK_FLAGS_TRACE) {
>>> +		va_list args;
>>> +
>>> +		va_start(args, fmt);
>>> +		/*
>>> +		 * All callers include the KERN_DEBUG prefix to keep the
>>> +		 * vprintk case simple; strip it out for tracing.
>>> +		 */
>>> +		dynamic_trace(fmt + strlen(KERN_DEBUG), args);  
>> 
>> Do we really need a separate tracing event for this? Why not just:
>> 
>>                 ftrace_vprintk(fmt + strlen(KERN_DEBUG), args);
>
> It must be an event, one that can be enabled or disabled separately
> from trace_printk().
>
> If you are asking if this could be something like trace_printk(),
> which ftrace_vprintk() is. The reason for that nasty banner when
> people use trace_printk() is to keep developers from using it as their
> personal debugging tool in production.
>
> A trace_printk() can not be discretely disabled. It's either totally
> on, or totally off. And since it is used for debugging, if there's
> trace_printk()s all over the kernel, you will have to deal with the
> noise of everyone else's trace_printk(), making trace_printk()
> useless.

I understand and agree with your concern about trace_printk(). But it
seems to me that trace_printk() via pr_debug() should be OK because
there is discrete control per message implemented. Yes, more code is
necessary to distinguish between the two, such as letting dynamic_printk
use an internal function that does not trigger a splat. But I think that
is reasonable.

For me a trace event represents a specific point in the kernel code. But
this new printk trace event, instead, represents general log
redirection. I do not oppose it, but it feels like a hack to me. In
contrast, simply setting a dynamic printk flag to write the message
string to the trace buffer (without also activating some pseudo trace
event) feels more natural.

Just sharing my thoughts, as requested.

John Ogness

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ