bnx2x: Fix firmware version string character counts
[sfrench/cifs-2.6.git] / drivers / net / ethernet / broadcom / bnx2x / bnx2x_link.c
index 02808513ffe45b7b09c4fee82e6e79f4849544c8..ea310057fe3aff71a091e1d5627b5f6e3f3b49b0 100644 (file)
@@ -6163,8 +6163,8 @@ static void bnx2x_link_int_ack(struct link_params *params,
 
 static int bnx2x_null_format_ver(u32 spirom_ver, u8 *str, u16 *len)
 {
-       str[0] = '\0';
-       (*len)--;
+       if (*len)
+               str[0] = '\0';
        return 0;
 }
 
@@ -6173,7 +6173,7 @@ static int bnx2x_format_ver(u32 num, u8 *str, u16 *len)
        u16 ret;
 
        if (*len < 10) {
-               /* Need more than 10chars for this format */
+               /* Need more than 10 chars for this format */
                bnx2x_null_format_ver(num, str, len);
                return -EINVAL;
        }
@@ -6188,8 +6188,8 @@ static int bnx2x_3_seq_format_ver(u32 num, u8 *str, u16 *len)
 {
        u16 ret;
 
-       if (*len < 10) {
-               /* Need more than 10chars for this format */
+       if (*len < 9) {
+               /* Need more than chars for this format */
                bnx2x_null_format_ver(num, str, len);
                return -EINVAL;
        }
@@ -6208,7 +6208,7 @@ int bnx2x_get_ext_phy_fw_version(struct link_params *params, u8 *version,
        int status = 0;
        u8 *ver_p = version;
        u16 remain_len = len;
-       if (version == NULL || params == NULL)
+       if (version == NULL || params == NULL || len == 0)
                return -EINVAL;
        bp = params->bp;
 
@@ -11546,7 +11546,7 @@ static int bnx2x_7101_format_ver(u32 spirom_ver, u8 *str, u16 *len)
        str[2] = (spirom_ver & 0xFF0000) >> 16;
        str[3] = (spirom_ver & 0xFF000000) >> 24;
        str[4] = '\0';
-       *len -= 5;
+       *len -= 4;
        return 0;
 }