On Fri, Jul 22, 2022 at 01:00:32AM +0900, Vincent Mailhol wrote: > 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@xxxxxxxxxx> > Signed-off-by: Vincent Mailhol <mailhol.vincent@xxxxxxxxxx> Heh, Marc just sent the same patch. Just in case this one gets picked up instead: Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> Thanks for the quick response! > --- > 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 50f6719b3aa4..32804fed116c 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); > @@ -502,7 +503,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 >