Skip to content

Commit 2753792

Browse files
Dan Carpenterdavem330
authored andcommitted
bnxt_en: fix ternary sign extension bug in bnxt_show_temp()
The problem is that bnxt_show_temp() returns long but "rc" is an int and "len" is a u32. With ternary operations the type promotion is quite tricky. The negative "rc" is first promoted to u32 and then to long so it ends up being a high positive value instead of a a negative as we intended. Fix this by removing the ternary. Fixes: d69753f ("bnxt_en: return proper error codes in bnxt_show_temp") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent e7679c5 commit 2753792

File tree

1 file changed

+3
-1
lines changed
  • drivers/net/ethernet/broadcom/bnxt

1 file changed

+3
-1
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9736,7 +9736,9 @@ static ssize_t bnxt_show_temp(struct device *dev,
97369736
if (!rc)
97379737
len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */
97389738
mutex_unlock(&bp->hwrm_cmd_lock);
9739-
return rc ?: len;
9739+
if (rc)
9740+
return rc;
9741+
return len;
97409742
}
97419743
static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0);
97429744

0 commit comments

Comments
 (0)