• U
    can: flexcan: fix NULL pointer exception during bringup · df69ad2c
    Uwe Kleine-König 提交于
    commit a55234dabe1f72cf22f9197980751d37e38ba020 upstream.
    
    Commit cbffaf7aa09e ("can: flexcan: Always use last mailbox for TX")
    introduced a loop letting i run up to (including) ARRAY_SIZE(regs->mb)
    and in the body accessed regs->mb[i] which is an out-of-bounds array
    access that then resulted in an access to an reserved register area.
    
    Later this was changed by commit 0517961ccdf1 ("can: flexcan: Add
    provision for variable payload size") to iterate a bit differently but
    still runs one iteration too much resulting to call
    
    	flexcan_get_mb(priv, priv->mb_count)
    
    which results in a WARN_ON and then a NULL pointer exception. This
    only affects devices compatible with "fsl,p1010-flexcan",
    "fsl,imx53-flexcan", "fsl,imx35-flexcan", "fsl,imx25-flexcan",
    "fsl,imx28-flexcan", so newer i.MX SoCs are not affected.
    
    Fixes: cbffaf7aa09e ("can: flexcan: Always use last mailbox for TX")
    Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: linux-stable <stable@vger.kernel.org> # >= 4.20
    Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    df69ad2c
flexcan.c 41.5 KB