Skip to content

Commit 66b1cfc

Browse files
Dan Carpentergregkh
authored andcommitted
bnxt_en: fix ternary sign extension bug in bnxt_show_temp()
[ Upstream commit 2753792 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 9f722ef commit 66b1cfc

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

  • drivers/net/ethernet/broadcom/bnxt

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9546,7 +9546,9 @@ static ssize_t bnxt_show_temp(struct device *dev,
95469546
if (!rc)
95479547
len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */
95489548
mutex_unlock(&bp->hwrm_cmd_lock);
9549-
return rc ?: len;
9549+
if (rc)
9550+
return rc;
9551+
return len;
95509552
}
95519553
static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0);
95529554

0 commit comments

Comments
 (0)