2024-04-26 05:05:44

by Krishna Kurapati

[permalink] [raw]
Subject: [PATCH] usb: dwc3: core: Fix compile warning on s390 gcc in dwc3_get_phy call

Recent commit introduced support for reading Multiport PHYs and
while doing so iterated over an integer variable which runs from
[0-254] in the worst case scenario. But S390 compiler treats it as a
warning and complains that the integer write to string can go to 11
characters. Fix this by modifying iterator variable to u8.

Suggested-by: Johan Hovold <[email protected]>
Fixes: 30a46746ca5a ("usb: dwc3: core: Refactor PHY logic to support Multiport Controller")
Reported-by: kernel test robot <[email protected]>
Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
Signed-off-by: Krishna Kurapati <[email protected]>
---
drivers/usb/dwc3/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 4dc6fc79c6d9..719305ab86c0 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -1449,7 +1449,7 @@ static int dwc3_core_get_phy(struct dwc3 *dwc)
struct device_node *node = dev->of_node;
char phy_name[9];
int ret;
- int i;
+ u8 i;

if (node) {
dwc->usb2_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0);
@@ -1479,7 +1479,7 @@ static int dwc3_core_get_phy(struct dwc3 *dwc)
if (dwc->num_usb2_ports == 1)
snprintf(phy_name, sizeof(phy_name), "usb2-phy");
else
- snprintf(phy_name, sizeof(phy_name), "usb2-%d", i);
+ snprintf(phy_name, sizeof(phy_name), "usb2-%u", i);

dwc->usb2_generic_phy[i] = devm_phy_get(dev, phy_name);
if (IS_ERR(dwc->usb2_generic_phy[i])) {
@@ -1496,7 +1496,7 @@ static int dwc3_core_get_phy(struct dwc3 *dwc)
if (dwc->num_usb3_ports == 1)
snprintf(phy_name, sizeof(phy_name), "usb3-phy");
else
- snprintf(phy_name, sizeof(phy_name), "usb3-%d", i);
+ snprintf(phy_name, sizeof(phy_name), "usb3-%u", i);

dwc->usb3_generic_phy[i] = devm_phy_get(dev, phy_name);
if (IS_ERR(dwc->usb3_generic_phy[i])) {
--
2.34.1



2024-04-26 09:47:07

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc3: core: Fix compile warning on s390 gcc in dwc3_get_phy call

On Fri, Apr 26, 2024 at 10:35:12AM +0530, Krishna Kurapati wrote:
> Recent commit introduced support for reading Multiport PHYs and
> while doing so iterated over an integer variable which runs from
> [0-254] in the worst case scenario. But S390 compiler treats it as a
> warning and complains that the integer write to string can go to 11
> characters. Fix this by modifying iterator variable to u8.
>
> Suggested-by: Johan Hovold <[email protected]>
> Fixes: 30a46746ca5a ("usb: dwc3: core: Refactor PHY logic to support Multiport Controller")
> Reported-by: kernel test robot <[email protected]>
> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Signed-off-by: Krishna Kurapati <[email protected]>
> ---
> drivers/usb/dwc3/core.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 4dc6fc79c6d9..719305ab86c0 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -1449,7 +1449,7 @@ static int dwc3_core_get_phy(struct dwc3 *dwc)
> struct device_node *node = dev->of_node;
> char phy_name[9];
> int ret;
> - int i;
> + u8 i;

Perhaps unsigned int would have been better, but this should work too
(the broken compiler did get the upper bound right).

I assume you did not install a cross-compiler and tried to reproduce the
bogus warning?

In any case, if we want to suppress that bogus W=1 warning, this looks
good to me:

Reviewed-by: Johan Hovold <[email protected]>

Johan