bnx2x: truncate value to original sizing
authorBill Wendling <morbo@google.com>
Mon, 21 Mar 2022 02:31:55 +0000 (19:31 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 22 Mar 2022 09:34:31 +0000 (10:34 +0100)
The original behavior was to print out unsigned short or unsigned char
values. The change in commit d65aea8e8298 ("bnx2x: use correct format
characters") prints out the whole value if not truncated. So truncate
the value to an unsigned {short|char} to retain the original behavior.

Fixes: d65aea8e8298 ("bnx2x: use correct format characters")
Link: https://github.com/ClangBuiltLinux/linux/issues/378
Signed-off-by: Bill Wendling <morbo@google.com>
Link: https://lore.kernel.org/r/20220321023155.106066-1-morbo@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c

index bede167..7071604 100644 (file)
@@ -6178,7 +6178,8 @@ static int bnx2x_format_ver(u32 num, u8 *str, u16 *len)
                return -EINVAL;
        }
 
-       ret = scnprintf(str, *len, "%x.%x", num >> 16, num);
+       ret = scnprintf(str, *len, "%x.%x", (num >> 16) & 0xFFFF,
+                       num & 0xFFFF);
        *len -= ret;
        return 0;
 }
@@ -6193,7 +6194,8 @@ static int bnx2x_3_seq_format_ver(u32 num, u8 *str, u16 *len)
                return -EINVAL;
        }
 
-       ret = scnprintf(str, *len, "%x.%x.%x", num >> 16, num >> 8, num);
+       ret = scnprintf(str, *len, "%x.%x.%x", (num >> 16) & 0xFF,
+                       (num >> 8) & 0xFF, num & 0xFF);
        *len -= ret;
        return 0;
 }