From 8306ed46d771cc3cda353d296ba54d366b400b64 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Mon, 24 Jul 2017 11:30:15 +0200 Subject: tegra_udc.c: fix compilation with gcc 7 With gcc 7 the following compile time error occurs: | .../drivers/usb/gadget/tegra_udc.c:2565:17: error: 'out' directive writing 3 bytes into a region of size between 2 and 11 [-Werror=format-overflow=] | sprintf(name, "ep%dout", i); | ^~~~~~~~~ | .../drivers/usb/gadget/tegra_udc.c:2565:3: note: 'sprintf' output between 7 and 16 bytes into a destination of size 14 | sprintf(name, "ep%dout", i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ The last end point will never be greater than 32 but the compiler can not find this out from the code. Work around this by passing a format specifier to interpreat i as a signed char. Signed-off-by: Max Krummenacher Acked-by: Marcel Ziswiler --- drivers/usb/gadget/tegra_udc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c index d8efe20d5bb8..0fd68f7bfb4b 100644 --- a/drivers/usb/gadget/tegra_udc.c +++ b/drivers/usb/gadget/tegra_udc.c @@ -2790,9 +2790,9 @@ static int tegra_udc_ep_setup(struct tegra_udc *udc) for (i = 1; i < (int)(udc->max_ep / 2); i++) { char name[14]; - sprintf(name, "ep%dout", i); + sprintf(name, "ep%hhdout", i); struct_ep_setup(udc, i * 2, name, 1); - sprintf(name, "ep%din", i); + sprintf(name, "ep%hhdin", i); struct_ep_setup(udc, i * 2 + 1, name, 1); } -- cgit v1.2.3