[PATCH] MTD: fix printk format warning
Randy.Dunlap
randy.dunlap at oracle.com
Tue Oct 24 11:29:31 EDT 2006
Ben Dooks wrote:
> On Tue, Oct 24, 2006 at 12:24:10PM +0300, Artem Bityutskiy wrote:
>> On Mon, 2006-10-23 at 21:48 -0700, Randy Dunlap wrote:
>>> (may be a gcc phenomenon)
>>> Fix printk format warning:
>>> drivers/mtd/maps/physmap.c:93: warning: long long unsigned int format, long unsigned int arg (arg 2)
>>>
>>> Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
>> ... snip ...
>>
>>> printk(KERN_NOTICE "physmap platform flash device: %.8llx at %.8llx\n",
>>> - (unsigned long long)dev->resource->end - dev->resource->start + 1,
>>> + (unsigned long long)(dev->resource->end - dev->resource->start + 1),
>>> (unsigned long long)dev->resource->start);
>> Hmm, AFAIK
>>
>> "(unsigned long) dev->resource->end - dev->resource->start + 1" should
>
> I thought that 'z' was the modifier to %x for resources?
Maybe you are thinking of 'z' for use with size_t ? From the C99 spec:
z Specifies that a following d, i, o, u, x, or X conversion specifier applies to a
size_t or the corresponding signed integer type argument; or that a
following n conversion specifier applies to a pointer to a signed integer type
corresponding to size_t argument. But a resource_size_t is not a size_t.
Depending on CONFIG, it's either:
#ifdef CONFIG_RESOURCES_64BIT
typedef u64 resource_size_t;
#else
typedef u32 resource_size_t;
#endif
which I suppose is what Artem missed. I.e., it's not always unsigned long.
However, I won't deny that gcc seems odd here.
--
~Randy
More information about the linux-mtd
mailing list