2019-02-26 23:52:52

by Louis Taylor

[permalink] [raw]
Subject: [PATCH] HID: quirks: use correct format chars in dbg_hid

When building with -Wformat, clang warns:

drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
bl_entry->driver_data, bl_entry->vendor,
^~~~~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
bl_entry->product);
^~~~~~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
quirks, hdev->vendor, hdev->product);
^~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
quirks, hdev->vendor, hdev->product);
^~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
4 warnings generated.

This patch fixes the format strings to use the correct format type for unsigned
ints.

Link: https://github.com/ClangBuiltLinux/linux/issues/378
Signed-off-by: Louis Taylor <[email protected]>
---
drivers/hid/hid-quirks.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 94088c0ed68a..b4e49e1b6f4a 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
}

if (bl_entry != NULL)
- dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
+ dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%x:0x%x\n",
bl_entry->driver_data, bl_entry->vendor,
bl_entry->product);

@@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
quirks |= bl_entry->driver_data;

if (quirks)
- dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
+ dbg_hid("Found squirk 0x%lx for HID device 0x%x:0x%x\n",
quirks, hdev->vendor, hdev->product);
return quirks;
}
--
2.20.1



2019-02-27 00:29:13

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH] HID: quirks: use correct format chars in dbg_hid

On Tue, Feb 26, 2019 at 3:50 PM Louis Taylor <[email protected]> wrote:
>
> When building with -Wformat, clang warns:
>
> drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->driver_data, bl_entry->vendor,
> ^~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->product);
> ^~~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> 4 warnings generated.
>
> This patch fixes the format strings to use the correct format type for unsigned
> ints.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/378
> Signed-off-by: Louis Taylor <[email protected]>
> ---
> drivers/hid/hid-quirks.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> index 94088c0ed68a..b4e49e1b6f4a 100644
> --- a/drivers/hid/hid-quirks.c
> +++ b/drivers/hid/hid-quirks.c
> @@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
> }
>
> if (bl_entry != NULL)
> - dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%x:0x%x\n",

%h is for short ints, include/linux/mod_devicetable.h declares struct
hid_device_id (bl_entry is an instance of struct hid_device_id)
unconditionally as:

147 struct hid_device_id {
...
150 __u32 vendor;
151 __u32 product;
...
153 };

yep; LGTM
Reviewed-by: Nick Desaulniers <[email protected]>
Thank you for the patch! There's 3 more of these in
drivers/hid/i2c-hid/i2c-hid-core.c if your looking to clean up some
more!

> bl_entry->driver_data, bl_entry->vendor,
> bl_entry->product);
>
> @@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
> quirks |= bl_entry->driver_data;
>
> if (quirks)
> - dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found squirk 0x%lx for HID device 0x%x:0x%x\n",
> quirks, hdev->vendor, hdev->product);
> return quirks;
> }
> --
> 2.20.1
>


--
Thanks,
~Nick Desaulniers

2019-02-27 09:57:53

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH] HID: quirks: use correct format chars in dbg_hid

On Wed, Feb 27, 2019 at 12:50 AM Louis Taylor <[email protected]> wrote:
>
> When building with -Wformat, clang warns:
>
> drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->driver_data, bl_entry->vendor,
> ^~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->product);
> ^~~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> 4 warnings generated.
>
> This patch fixes the format strings to use the correct format type for unsigned
> ints.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/378
> Signed-off-by: Louis Taylor <[email protected]>
> ---
> drivers/hid/hid-quirks.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> index 94088c0ed68a..b4e49e1b6f4a 100644
> --- a/drivers/hid/hid-quirks.c
> +++ b/drivers/hid/hid-quirks.c
> @@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
> }
>
> if (bl_entry != NULL)
> - dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%x:0x%x\n",

Can you make it %04x instead?
The VID/PID are usually 4 hex chars, and without the '04' format,
you'll end up having a varying length result, which is not that nice.

Cheers,
Benjamin

> bl_entry->driver_data, bl_entry->vendor,
> bl_entry->product);
>
> @@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
> quirks |= bl_entry->driver_data;
>
> if (quirks)
> - dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found squirk 0x%lx for HID device 0x%x:0x%x\n",
> quirks, hdev->vendor, hdev->product);
> return quirks;
> }
> --
> 2.20.1
>

2019-02-27 11:11:10

by Louis Taylor

[permalink] [raw]
Subject: [PATCH v2] HID: quirks: use correct format chars in dbg_hid

When building with -Wformat, clang warns:

drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
bl_entry->driver_data, bl_entry->vendor,
^~~~~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
bl_entry->product);
^~~~~~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
quirks, hdev->vendor, hdev->product);
^~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
[-Wformat]
quirks, hdev->vendor, hdev->product);
^~~~~~~~~~~~~
./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
~~~~~~ ^~~
4 warnings generated.

This patch fixes the format strings to use the correct format type for unsigned
ints.

Link: https://github.com/ClangBuiltLinux/linux/issues/378
Signed-off-by: Louis Taylor <[email protected]>
---

v2: change format string to use %04x instead of %x

drivers/hid/hid-quirks.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 94088c0ed68a..b608a57b7908 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
}

if (bl_entry != NULL)
- dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
+ dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%04x:0x%04x\n",
bl_entry->driver_data, bl_entry->vendor,
bl_entry->product);

@@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
quirks |= bl_entry->driver_data;

if (quirks)
- dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
+ dbg_hid("Found squirk 0x%lx for HID device 0x%04x:0x%04x\n",
quirks, hdev->vendor, hdev->product);
return quirks;
}
--
2.20.1


2019-02-27 19:43:47

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH v2] HID: quirks: use correct format chars in dbg_hid

On Wed, Feb 27, 2019 at 3:08 AM Louis Taylor <[email protected]> wrote:
>
> When building with -Wformat, clang warns:
>
> drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->driver_data, bl_entry->vendor,
> ^~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> bl_entry->product);
> ^~~~~~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
> 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> [-Wformat]
> quirks, hdev->vendor, hdev->product);
> ^~~~~~~~~~~~~
> ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> ~~~~~~ ^~~
> 4 warnings generated.
>
> This patch fixes the format strings to use the correct format type for unsigned
> ints.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/378
> Signed-off-by: Louis Taylor <[email protected]>

Thanks for following up on the feedback.
Reviewed-by: Nick Desaulniers <[email protected]>

> ---
>
> v2: change format string to use %04x instead of %x
>
> drivers/hid/hid-quirks.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> index 94088c0ed68a..b608a57b7908 100644
> --- a/drivers/hid/hid-quirks.c
> +++ b/drivers/hid/hid-quirks.c
> @@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
> }
>
> if (bl_entry != NULL)
> - dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%04x:0x%04x\n",
> bl_entry->driver_data, bl_entry->vendor,
> bl_entry->product);
>
> @@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
> quirks |= bl_entry->driver_data;
>
> if (quirks)
> - dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
> + dbg_hid("Found squirk 0x%lx for HID device 0x%04x:0x%04x\n",
> quirks, hdev->vendor, hdev->product);
> return quirks;
> }
> --
> 2.20.1
>


--
Thanks,
~Nick Desaulniers

2019-03-11 14:58:40

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [PATCH v2] HID: quirks: use correct format chars in dbg_hid

On Wed, Feb 27, 2019 at 8:43 PM Nick Desaulniers
<[email protected]> wrote:
>
> On Wed, Feb 27, 2019 at 3:08 AM Louis Taylor <[email protected]> wrote:
> >
> > When building with -Wformat, clang warns:
> >
> > drivers/hid/hid-quirks.c:1075:27: warning: format specifies type
> > 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> > [-Wformat]
> > bl_entry->driver_data, bl_entry->vendor,
> > ^~~~~~~~~~~~~~~~
> > ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> > printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> > ~~~~~~ ^~~
> > drivers/hid/hid-quirks.c:1076:4: warning: format specifies type
> > 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> > [-Wformat]
> > bl_entry->product);
> > ^~~~~~~~~~~~~~~~~
> > ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> > printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> > ~~~~~~ ^~~
> > drivers/hid/hid-quirks.c:1242:12: warning: format specifies type
> > 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> > [-Wformat]
> > quirks, hdev->vendor, hdev->product);
> > ^~~~~~~~~~~~
> > ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> > printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> > ~~~~~~ ^~~
> > drivers/hid/hid-quirks.c:1242:26: warning: format specifies type
> > 'unsigned short' but the argument has type '__u32' (aka 'unsigned int')
> > [-Wformat]
> > quirks, hdev->vendor, hdev->product);
> > ^~~~~~~~~~~~~
> > ./include/linux/hid.h:1170:48: note: expanded from macro 'dbg_hid'
> > printk(KERN_DEBUG "%s: " format, __FILE__, ##arg); \
> > ~~~~~~ ^~~
> > 4 warnings generated.
> >
> > This patch fixes the format strings to use the correct format type for unsigned
> > ints.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/378
> > Signed-off-by: Louis Taylor <[email protected]>
>
> Thanks for following up on the feedback.
> Reviewed-by: Nick Desaulniers <[email protected]>

Applied to for-5.1/upstream-fixes

Cheers,
Benjamin

>
> > ---
> >
> > v2: change format string to use %04x instead of %x
> >
> > drivers/hid/hid-quirks.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
> > index 94088c0ed68a..b608a57b7908 100644
> > --- a/drivers/hid/hid-quirks.c
> > +++ b/drivers/hid/hid-quirks.c
> > @@ -1071,7 +1071,7 @@ static struct hid_device_id *hid_exists_dquirk(const struct hid_device *hdev)
> > }
> >
> > if (bl_entry != NULL)
> > - dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%hx:0x%hx\n",
> > + dbg_hid("Found dynamic quirk 0x%lx for HID device 0x%04x:0x%04x\n",
> > bl_entry->driver_data, bl_entry->vendor,
> > bl_entry->product);
> >
> > @@ -1238,7 +1238,7 @@ static unsigned long hid_gets_squirk(const struct hid_device *hdev)
> > quirks |= bl_entry->driver_data;
> >
> > if (quirks)
> > - dbg_hid("Found squirk 0x%lx for HID device 0x%hx:0x%hx\n",
> > + dbg_hid("Found squirk 0x%lx for HID device 0x%04x:0x%04x\n",
> > quirks, hdev->vendor, hdev->product);
> > return quirks;
> > }
> > --
> > 2.20.1
> >
>
>
> --
> Thanks,
> ~Nick Desaulniers