public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Martin Peschke <mp3@de.ibm.com>
To: Tim Bird <tim.bird@am.sony.com>
Cc: Andrew Morton <akpm@osdl.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [Patch 3/6] statistics infrastructure - prerequisite: timestamp
Date: Thu, 01 Jun 2006 10:40:32 +0200	[thread overview]
Message-ID: <447EA800.101@de.ibm.com> (raw)
In-Reply-To: <4474CD38.5090206@am.sony.com>

Tim Bird wrote:
> Martin Peschke wrote:
>> And I think that I have fixed a printed_len related miscalculation.
>> printed_len needs to be increased if no valid log level has been found
>> and a log level prefix has been added by printk(). Otherwise, printed_len
>> must not be increased. The old code did it the other way around (in the
>> timestamp case).
> 
> I'm not following your change here.  I can't find the problem you
> mention in the original code.  And your fix appears to mess up the
> printed_len.

I am sorry for not responding sooner ... and I am sorry for introducing
a bug here. I think you are right.

>> +		if (new_line) {
>> +			/* The log level token is first. */
>> +			int loglev_char;
>> +			if (p[0] == '<' && p[1] >='0' &&
>> +			    p[1] <= '7' && p[2] == '>') {
>> +				loglev_char = p[1];
>> +				p += 3;
>> +				printed_len -= 3;
> Here you subtract from the printed_len to account for skipping
> the submitted log level.
> 
>> +			} else	{
>> +				loglev_char = default_message_loglevel + '0';
>> +			}
>> +			emit_log_char('<');
>> +			emit_log_char(loglev_char);
>> +			emit_log_char('>');
> 
> But here you don't re-count the chars for the log-level
> you are adding back in.  There's a discrepancy here.

Correct. My print_len loses 3 in the 'got log level'-case due to a surplus
substraction. It also loses 3 in the other case due to adding a log level
substring that is not entered in the books.

This is how I would fix it:

         printed_len = vscnprintf(printk_buf, sizeof(printk_buf), fmt, args);

         ...

         if (new_line) {
                 /* The log level token is first. */
                 int loglev_char;
                 if (p[0] == '<' && p[1] >='0' &&
                     p[1] <= '7' && p[2] == '>') {
                         loglev_char = p[1];
                         p += 3;
                 } else  {
                         loglev_char = default_message_loglevel + '0';
                         print_len += 3;
                 }
                 emit_log_char('<');
                 emit_log_char(loglev_char);
                 emit_log_char('>');


Could you confirm, please. I will send a patch to Andrew then.


Or, Andrew, do you prefer a replacement patch for my
statistics-infrastructure-prerequisite-timestamp.patch
that introduces this miscalculation. I could put
statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
into that one as well, so that all the timestamp related printk-changes are in
one place.


  reply	other threads:[~2006-06-01  8:40 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-19 16:11 [Patch 3/6] statistics infrastructure - prerequisite: timestamp Martin Peschke
2006-05-23 13:06 ` Balbir Singh
2006-05-23 13:33   ` Martin Peschke
2006-05-24 21:16 ` Tim Bird
2006-06-01  8:40   ` Martin Peschke [this message]
2006-06-01  8:50     ` Andrew Morton
  -- strict thread matches above, loose matches on Subject: below --
2006-05-24 12:31 Martin Peschke
2006-05-24 22:08 ` Andrew Morton
2006-05-24 22:45   ` Thomas Gleixner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=447EA800.101@de.ibm.com \
    --to=mp3@de.ibm.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tim.bird@am.sony.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox