| From 54c5ab0f498f16f3318e667ae215eabb30ac1601 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 6 Jan 2022 14:57:54 +0300 |
| Subject: rocker: fix a sleeping in atomic bug |
| |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| |
| [ Upstream commit 43d012123122cc69feacab55b71369f386c19566 ] |
| |
| This code is holding the &ofdpa->flow_tbl_lock spinlock so it is not |
| allowed to sleep. That means we have to pass the OFDPA_OP_FLAG_NOWAIT |
| flag to ofdpa_flow_tbl_del(). |
| |
| Fixes: 936bd486564a ("rocker: use FIB notifications instead of switchdev calls") |
| Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/rocker/rocker_ofdpa.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c |
| index 7072b249c8bd6..8157666209798 100644 |
| --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c |
| +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c |
| @@ -2795,7 +2795,8 @@ static void ofdpa_fib4_abort(struct rocker *rocker) |
| if (!ofdpa_port) |
| continue; |
| nh->fib_nh_flags &= ~RTNH_F_OFFLOAD; |
| - ofdpa_flow_tbl_del(ofdpa_port, OFDPA_OP_FLAG_REMOVE, |
| + ofdpa_flow_tbl_del(ofdpa_port, |
| + OFDPA_OP_FLAG_REMOVE | OFDPA_OP_FLAG_NOWAIT, |
| flow_entry); |
| } |
| spin_unlock_irqrestore(&ofdpa->flow_tbl_lock, flags); |
| -- |
| 2.34.1 |
| |