From: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> Date: Tue, 21 Jul 2020 15:23:12 +0900 > According to the report of [1], this driver is possible to cause > the following error in ravb_tx_timeout_work(). > > ravb e6800000.ethernet ethernet: failed to switch device to config mode > > This error means that the hardware could not change the state > from "Operation" to "Configuration" while some tx and/or rx queue > are operating. After that, ravb_config() in ravb_dmac_init() will fail, > and then any descriptors will be not allocaled anymore so that NULL > pointer dereference happens after that on ravb_start_xmit(). > > To fix the issue, the ravb_tx_timeout_work() should check > the return values of ravb_stop_dma() and ravb_dmac_init(). > If ravb_stop_dma() fails, ravb_tx_timeout_work() re-enables TX and RX > and just exits. If ravb_dmac_init() fails, just exits. > > [1] > https://lore.kernel.org/linux-renesas-soc/20200518045452.2390-1-dirk.behme@xxxxxxxxxxxx/ > > Reported-by: Dirk Behme <dirk.behme@xxxxxxxxxxxx> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > Reviewed-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxx> Applied, thank you.