lkml.org 
[lkml]   [2019]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH v2] wusb: use correct format characters
From
Date
On Thu, 2019-02-28 at 12:24 +0000, Louis Taylor wrote:
> When compiling with -Wformat, clang warns:
> ./include/linux/usb/wusb.h:245:5: warning: format specifies type
> 'unsigned short' but the argument has type 'u8' (aka 'unsigned char')
> [-Wformat]
> ckhdid->data[0], ckhdid->data[1],
> ^~~~~~~~~~~~~~~

I think the message is somewhat misguided as all the
vararg arguments have implicit integer promotions.

> ckhdid->data is unconditionally defined as `u8 data[16]`, so this patch
> updates the format characters to the correct one for unsigned char types.
[]
> diff --git a/include/linux/usb/wusb.h b/include/linux/usb/wusb.h
[]
> @@ -240,8 +240,8 @@ static inline size_t ckhdid_printf(char *pr_ckhdid, size_t size,
> const struct wusb_ckhdid *ckhdid)
> {
> return scnprintf(pr_ckhdid, size,
> - "%02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx "
> - "%02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx",
> + "%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx "
> + "%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx",
> ckhdid->data[0], ckhdid->data[1],
> ckhdid->data[2], ckhdid->data[3],
> ckhdid->data[4], ckhdid->data[5],

Better to use the vsprintf %ph extension insead.
---
include/linux/usb/wusb.h | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/include/linux/usb/wusb.h b/include/linux/usb/wusb.h
index 9e4a3213f2c2..8c39ddf62951 100644
--- a/include/linux/usb/wusb.h
+++ b/include/linux/usb/wusb.h
@@ -239,17 +239,7 @@ enum {
static inline size_t ckhdid_printf(char *pr_ckhdid, size_t size,
const struct wusb_ckhdid *ckhdid)
{
- return scnprintf(pr_ckhdid, size,
- "%02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx "
- "%02hx %02hx %02hx %02hx %02hx %02hx %02hx %02hx",
- ckhdid->data[0], ckhdid->data[1],
- ckhdid->data[2], ckhdid->data[3],
- ckhdid->data[4], ckhdid->data[5],
- ckhdid->data[6], ckhdid->data[7],
- ckhdid->data[8], ckhdid->data[9],
- ckhdid->data[10], ckhdid->data[11],
- ckhdid->data[12], ckhdid->data[13],
- ckhdid->data[14], ckhdid->data[15]);
+ return scnprintf(pr_ckhdid, size, "%16ph", ckhdid->data);
}

/*

\
 
 \ /
  Last update: 2019-02-28 22:54    [W:0.162 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site