[lkml]   [2012]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [TRIVIAL PATCH 16/26] x86: Convert print_symbol to %pSR
On Wed, Dec 12, 2012 at 01:30:03PM -0800, Joe Perches wrote:
> > I think I'd go ahead and ACK this unless Tony has some comments. I'm
> > not happy about the two pr_emerg calls based on the conditional.
> It was done to avoid interleaving.


> > Or, Tony, what do you think, could we get away if we printed empty
> > string for when m->cs != __KERNEL_CS? I'm thinking of not breaking any
> > userspace which is parsing that output and seeing "... {}" in that case.
> >
> > This assumes that vsprintf can print (void *)0 when passed as an
> > argument through %pSR. Joe?
> Definitely yes when not #defined CONFIG_KALLSYMS
> I believe no object exists at address 0 for all
> arches so I believe yes for CONFIG_KALLSYMS too,

Ok, here's what I'm thinking more specifically. Have single call like this:

pr_emerg(HW_ERR "RIP%s %02x:<%016Lx> {%pSR}\n",
!(m->mcgstatus & MCG_STATUS_EIPV) ? " !INEXACT!" : "",
m->cs, m->ip,
(m->cs == __KERNEL_CS) ? (void *)m->ip : (void *)0);

and when vsprintf gets to it, it recognizes the special case of
(void *)0 and dumps the empty string "" for that argument.


> My preference is to eventually do away with all the
> "[%0(size)lx] %pSR", addr, (void *)addr
> uses and create another %pSx that emits the pointer
> address and the function/offset in one go in a
> standardized style without caring about the pointer
> size.
> Something like:
> "%pSp", (void *)addr
> would emit
> [<7def0123>] function_name+offset/size

Right, this is another way of looking it. And in order to make it more
robust, it should be able to handle the (void *)0 case so that callers
don't have to check the arg.



Sent from a fat crate under my desk. Formatting is fine.

 \ /
  Last update: 2012-12-13 02:01    [W:0.204 / U:4.676 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site