Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: i2c-hid: fix format string mismatch

clang doesn't like printing a 32-bit integer using %hX format string:

drivers/hid/i2c-hid/i2c-hid-core.c:994:18: error: format specifies type 'unsigned short' but the argument has type '__u32' (aka 'unsigned int') [-Werror,-Wformat]
client->name, hid->vendor, hid->product);
^~~~~~~~~~~
drivers/hid/i2c-hid/i2c-hid-core.c:994:31: error: format specifies type 'unsigned short' but the argument has type '__u32' (aka 'unsigned int') [-Werror,-Wformat]
client->name, hid->vendor, hid->product);
^~~~~~~~~~~~

Use an explicit cast to truncate it to the low 16 bits instead.

Fixes: 9ee3e06610fd ("HID: i2c-hid: override HID descriptors for certain devices")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Arnd Bergmann and committed by
Jiri Kosina
dc5f9f55 5ad755fd

+2 -2
+2 -2
drivers/hid/i2c-hid/i2c-hid-core.c
··· 997 997 hid->vendor = le16_to_cpu(ihid->hdesc.wVendorID); 998 998 hid->product = le16_to_cpu(ihid->hdesc.wProductID); 999 999 1000 - snprintf(hid->name, sizeof(hid->name), "%s %04hX:%04hX", 1001 - client->name, hid->vendor, hid->product); 1000 + snprintf(hid->name, sizeof(hid->name), "%s %04X:%04X", 1001 + client->name, (u16)hid->vendor, (u16)hid->product); 1002 1002 strlcpy(hid->phys, dev_name(&client->dev), sizeof(hid->phys)); 1003 1003 1004 1004 ihid->quirks = i2c_hid_lookup_quirk(hid->vendor, hid->product);