Re: printk %0*X is broken.

From: Ingo Molnar
Date: Wed May 06 2009 - 03:20:14 EST



Cc:-ed more folks who modified lib/vsprintf.c recently.

Ingo

* Yinghai Lu <yinghai@xxxxxxxxxx> wrote:

> it seems someone broke
>
> printk( "%0*X\n", width, x);
>
> looks like 0 is dumped.
>
> YH
>
> [ 0.000000] MTRR variable ranges enabled:
> [ 0.000000] 0 base 0 00000000 mask FF0 00000000 write-back
> [ 0.000000] 1 base 10 00000000 mask FFF 80000000 write-back
> [ 0.000000] 2 base 0 80000000 mask FFF 80000000 uncachable
> [ 0.000000] 3 base 0 7F800000 mask FFF FF800000 uncachable
>
>
> code:
> for (i = 0; i < num_var_ranges; ++i) {
> if (mtrr_state.var_ranges[i].mask_lo & (1 << 11))
> printk(KERN_DEBUG " %u base %0*X%05X000 mask %0*X%05X000 %s\n",
> i,
> high_width,
> mtrr_state.var_ranges[i].base_hi,
> mtrr_state.var_ranges[i].base_lo >> 12,
> high_width,
> mtrr_state.var_ranges[i].mask_hi,
> mtrr_state.var_ranges[i].mask_lo >> 12,
> mtrr_attrib_to_str(mtrr_state.var_ranges[i].base_lo & 0xff));
> else
> printk(KERN_DEBUG " %u disabled\n", i);
> }
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/