Messages in this thread Patch in this message | | | Date | Wed, 10 Jun 2009 09:38:55 +0200 | From | Wolfgang Grandegger <> | Subject | Re: linux-next: net tree build warning |
| |
David Miller wrote: > From: Wolfgang Grandegger <wg@grandegger.com> > Date: Tue, 09 Jun 2009 15:14:38 +0200 > >> David Miller wrote: >>> From: Wolfgang Grandegger <wg@grandegger.com> >>> Date: Tue, 09 Jun 2009 13:25:27 +0200 >>> >>>> [PATCH] can: sja1000_of_platform: fix build problems with printk format >>>> >>>> Variables of type size_t should be printed with the format "%zx". >>>> >>>> Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> >>> It's not a "size_t", it's a "resource_size_t" which can be >>> "unsigned long long" on some platforms. >> Right, but I assume that the %zx handles that type properly as well. > > It absolutely does not.b > > resource_size_t is a arch specifically defined type that > could be anything, it does not conform to the definitions > of size_t.
Right, I'm now compiling on a x86_64 system and can reproduce the warnings. Below is a revised patch.
Thanks for your patience.
Wolfgang.
[PATCH v2] can: sja1000_of_platform: fix build problems with printk format
According to "Documentation/printk-formats.txt", if the type is dependent on a config option for its size, like resource_size_t, we should use a format specifier of its largest possible type and explicitly cast to it.
Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> --- drivers/net/can/sja1000/sja1000_of_platform.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
Index: net-next-2.6/drivers/net/can/sja1000/sja1000_of_platform.c =================================================================== --- net-next-2.6.orig/drivers/net/can/sja1000/sja1000_of_platform.c 2009-06-09 12:45:38.000000000 +0200 +++ net-next-2.6/drivers/net/can/sja1000/sja1000_of_platform.c 2009-06-10 09:23:47.208720083 +0200 @@ -108,15 +108,17 @@ res_size = resource_size(&res); if (!request_mem_region(res.start, res_size, DRV_NAME)) { - dev_err(&ofdev->dev, "couldn't request %#x..%#x\n", - res.start, res.end); + dev_err(&ofdev->dev, "couldn't request %#llx..%#llx\n", + (unsigned long long)res.start, + (unsigned long long)res.end); return -EBUSY; } base = ioremap_nocache(res.start, res_size); if (!base) { - dev_err(&ofdev->dev, "couldn't ioremap %#x..%#x\n", - res.start, res.end); + dev_err(&ofdev->dev, "couldn't ioremap %#llx..%#llx\n", + (unsigned long long)res.start, + (unsigned long long)res.end); err = -ENOMEM; goto exit_release_mem; }
| |