%pa format specifier issues

From: Dave Hansen
Date: Tue Mar 05 2013 - 20:18:41 EST


I went to go use the shiny new %pa specifier:

void test_printk_pa(void)
{
phys_addr_t p = 0x1234;
printk("p: %pa\n", p);
}

but gcc is spewing out warnings at me:

> arch/x86/mm/physaddr.c: In function ‘test_printk_pa’:
> arch/x86/mm/physaddr.c:95:2: warning: format ‘%p’ expects argument of type ‘void *’, but argument 2 has type ‘phys_addr_t’ [-Wformat]

I assume that's because gcc doesn't know about '%pa', and just assumes
it's a plain '%p'. Should we be turning these warnings off somehow?

Plus when I actually go to run it, vsnprintf() crashes the kernel, which
usually happens if printk()'s format doesn't match the size of its
arguments.

Am I doing something really stupid here?

This is using a 32-bit i386 kernel.

--
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/