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]
Message-ID: <1413041569.16385.20.camel@joe-AO725>
Date:	Sat, 11 Oct 2014 08:32:49 -0700
From:	Joe Perches <joe@...ches.com>
To:	Sudip Mukherjee <sudipm.mukherjee@...il.com>
Cc:	h@...ip-PC, Raymond Yau <superquad.vortex2@...il.com>,
	Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.de>,
	alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Subject: Re: [alsa-devel] [PATCH v2 2/2] ALSA: au88x0: pr_* replaced with
 dev_*

On Sat, 2014-10-11 at 17:03 +0530, Sudip Mukherjee wrote:
> On Sat, Oct 11, 2014 at 03:48:11AM -0700, Joe Perches wrote:
> > On Sat, 2014-10-11 at 14:39 +0530, Sudip Mukherjee wrote:
> > > On Sat, Oct 11, 2014 at 03:20:56PM +0800, Raymond Yau wrote:
> > > > >
> <snip>
> > > > > ---
> > > > >
> > > > 
> > > > >  static int vortex_core_init(vortex_t *vortex)
> > > > >  {
> > > > >
> > > > > -       pr_info( "Vortex: init.... ");
> > > > > +       dev_info(vortex->card->dev, "init.... ");
> > > > 
> > > > Is it possible to add linefeed  since "done/n" won't appear in the same
> > > > line with init nor shutdown?
> > > > 
> > > should we add linefeed ?
> > > as of now it will print init.... then it will print done as the init is complete.
> > > so dmesg will show us:
> > > 
> > > init....done.
> > > 
> > > same for shutdown.
> > > but if we give linefeed , then it will become : 
> > > 
> > > init....
> > > done.
> > > 
> > > the meaning will be lost. and many user might just wonder what is done ? 
> > []
> > > > > @@ -2738,7 +2744,7 @@ static int vortex_core_init(vortex_t *vortex)
> > > > >  static int vortex_core_shutdown(vortex_t * vortex)
> > > > >  {
> > > > >
> > > > > -       pr_info( "Vortex: shutdown...");
> > > > > +       dev_info(vortex->card->dev, "shutdown...");
> > > > >  #ifndef CHIP_AU8820
> > > > >         vortex_eq_free(vortex);
> > > > >         vortex_Vort3D_disable(vortex);
> > > > > @@ -2760,7 +2766,7 @@ static int vortex_core_shutdown(vortex_t * vortex)
> > > > >         msleep(5);
> > > > >         hwwrite(vortex->mmio, VORTEX_IRQ_SOURCE, 0xffff);
> > > > >
> > > > > -       pr_info( "done.\n");
> > > > > +       dev_info(vortex->card->dev, "done.\n");
> > > > >         return 0;
> > > > >  }
> > 
> > It's actually on 2 lines before your patch.
> > 
> > 	pr_info("a");
> > 	pr_info("b\n");
> > 
> > already emits 2 separate lines.
> > 
> > 	pr_info("a");
> > 	pr_cont("b\n");
> > 
> > emits a single line "ab"
> > (unless some other thread emits something in-between)
> > 
> > pr_cont or a bare printk can be used after a dev_info
> > without a newline to avoid unwanted newlines.
> 
> i think i was not thinking while writing the previous mail.

It seems you were thinking then and now,
but unfortunately, you are assuming a bit
more than you have actual experience or
knowledge of printk inner workings.
 
> pr_info("a");
> pr_info("b\n");
> should print as "ab" ,
 
This is not true.

All pr_<level> uses but pr_cont always
start on a new line by emitting a newline
if the last line did not have one.

The difference between using:

pr_info("a")
pr_info("b\n")

and

pr_info("a\n")
pr_info("b\n")

is not emitted line count.

The first may unintentionally be continued
by another thread using a printk that does
not start with a KERN_<LEVEL>.

printk has had this behavior for ~5 years
since these 2 commits:

commit e28d713704117bca0820c732210df6075b09f13b
Author: Linus Torvalds <torvalds@...ux-foundation.org>
Date:   Tue Jun 16 11:02:28 2009 -0700

    printk: Add KERN_DEFAULT printk log-level
    
    This adds a KERN_DEFAULT loglevel marker, for when you cannot decide
    which loglevel you want, and just want to keep an existing printk
    with the default loglevel.
    
    The difference between having KERN_DEFAULT and having no log-level
    marker at all is two-fold:
    
     - having the log-level marker will now force a new-line if the
       previous printout had not added one (perhaps because it forgot,
       but perhaps because it expected a continuation)
    
     - having a log-level marker is required if you are printing out a
       message that otherwise itself could perhaps otherwise be mistaken
       for a log-level.
    
and

commit 5fd29d6ccbc98884569d6f3105aeca70858b3e0f
Author: Linus Torvalds <torvalds@...ux-foundation.org>
Date:   Tue Jun 16 10:57:02 2009 -0700

    printk: clean up handling of log-levels and newlines
    
    It used to be that we would only look at the log-level in a printk()
    after explicit newlines, which can cause annoying problems when the
    previous printk() did not end with a '\n'. In that case, the log-level
    marker would be just printed out in the middle of the line, and be
    seen as just noise rather than change the logging level.
    
    This changes things to always look at the log-level in the first
    bytes of the printout. If a log level marker is found, it is always
    used as the log-level. Additionally, if no newline existed, one is
    added (unless the log-level is the explicit KERN_CONT marker, to
    explicitly show that it's a continuation of a previous line).



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ