lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 495/530] bnxt_en: fix ternary sign extension bug in bnxt_show_temp()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 27537929f30d3136a71ef29db56127a33c92dad7 ]

    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: d69753fa1ecb ("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>
    ---
    drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
    index a59c1f1fb31e..512457e0301d 100644
    --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
    +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
    @@ -9546,7 +9546,9 @@ static ssize_t bnxt_show_temp(struct device *dev,
    if (!rc)
    len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */
    mutex_unlock(&bp->hwrm_cmd_lock);
    - return rc ?: len;
    + if (rc)
    + return rc;
    + return len;
    }
    static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0);

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-12 19:01    [W:4.685 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site