lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 140/389] can: pch_can: pch_can_error(): initialize errc before using it
    Date
    From: Vincent Mailhol <mailhol.vincent@wanadoo.fr>

    [ Upstream commit 9950f11211331180269867aef848c7cf56861742 ]

    After commit 3a5c7e4611dd, the variable errc is accessed before being
    initialized, c.f. below W=2 warning:

    | In function 'pch_can_error',
    | inlined from 'pch_can_poll' at drivers/net/can/pch_can.c:739:4:
    | drivers/net/can/pch_can.c:501:29: warning: 'errc' may be used uninitialized [-Wmaybe-uninitialized]
    | 501 | cf->data[6] = errc & PCH_TEC;
    | | ^
    | drivers/net/can/pch_can.c: In function 'pch_can_poll':
    | drivers/net/can/pch_can.c:484:13: note: 'errc' was declared here
    | 484 | u32 errc, lec;
    | | ^~~~

    Moving errc initialization up solves this issue.

    Fixes: 3a5c7e4611dd ("can: pch_can: do not report txerr and rxerr during bus-off")
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/all/20220721160032.9348-1-mailhol.vincent@wanadoo.fr
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/can/pch_can.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
    index b148572e4a74..586bda050d28 100644
    --- a/drivers/net/can/pch_can.c
    +++ b/drivers/net/can/pch_can.c
    @@ -489,6 +489,7 @@ static void pch_can_error(struct net_device *ndev, u32 status)
    if (!skb)
    return;

    + errc = ioread32(&priv->regs->errc);
    if (status & PCH_BUS_OFF) {
    pch_can_set_tx_all(priv, 0);
    pch_can_set_rx_all(priv, 0);
    @@ -501,7 +502,6 @@ static void pch_can_error(struct net_device *ndev, u32 status)
    cf->data[7] = (errc & PCH_REC) >> 8;
    }

    - errc = ioread32(&priv->regs->errc);
    /* Warning interrupt. */
    if (status & PCH_EWARN) {
    state = CAN_STATE_ERROR_WARNING;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-23 13:26    [W:3.637 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site