| From 273f51e620f6b5bf07b526519fd2e0fb128e943f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 5 Nov 2020 21:51:47 +0000 |
| Subject: can: dev: can_restart(): post buffer from the right context |
| |
| From: Alejandro Concepcion Rodriguez <alejandro@acoro.eu> |
| |
| [ Upstream commit a1e654070a60d5d4f7cce59c38f4ca790bb79121 ] |
| |
| netif_rx() is meant to be called from interrupt contexts. can_restart() may be |
| called by can_restart_work(), which is called from a worqueue, so it may run in |
| process context. Use netif_rx_ni() instead. |
| |
| Fixes: 39549eef3587 ("can: CAN Network device driver and Netlink interface") |
| Co-developed-by: Loris Fauster <loris.fauster@ttcontrol.com> |
| Signed-off-by: Loris Fauster <loris.fauster@ttcontrol.com> |
| Signed-off-by: Alejandro Concepcion Rodriguez <alejandro@acoro.eu> |
| Link: https://lore.kernel.org/r/4e84162b-fb31-3a73-fa9a-9438b4bd5234@acoro.eu |
| [mkl: use netif_rx_ni() instead of netif_rx_any_context()] |
| Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/can/dev.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c |
| index 1950b13f22dfc..f88590074569e 100644 |
| --- a/drivers/net/can/dev.c |
| +++ b/drivers/net/can/dev.c |
| @@ -579,7 +579,7 @@ static void can_restart(struct net_device *dev) |
| } |
| cf->can_id |= CAN_ERR_RESTARTED; |
| |
| - netif_rx(skb); |
| + netif_rx_ni(skb); |
| |
| stats->rx_packets++; |
| stats->rx_bytes += cf->can_dlc; |
| -- |
| 2.27.0 |
| |