| From 78e0121ddd154ef576b8e42fbb770fef520329a2 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 1 Mar 2022 23:28:22 +0100 |
| Subject: sfc: extend the locking on mcdi->seqno |
| |
| From: Niels Dossche <dossche.niels@gmail.com> |
| |
| [ Upstream commit f1fb205efb0ccca55626fd4ef38570dd16b44719 ] |
| |
| seqno could be read as a stale value outside of the lock. The lock is |
| already acquired to protect the modification of seqno against a possible |
| race condition. Place the reading of this value also inside this locking |
| to protect it against a possible race condition. |
| |
| Signed-off-by: Niels Dossche <dossche.niels@gmail.com> |
| Acked-by: Martin Habets <habetsm.xilinx@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/sfc/mcdi.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c |
| index dfad93fca0a6..0fa64b8b79bf 100644 |
| --- a/drivers/net/ethernet/sfc/mcdi.c |
| +++ b/drivers/net/ethernet/sfc/mcdi.c |
| @@ -166,9 +166,9 @@ static void efx_mcdi_send_request(struct efx_nic *efx, unsigned cmd, |
| /* Serialise with efx_mcdi_ev_cpl() and efx_mcdi_ev_death() */ |
| spin_lock_bh(&mcdi->iface_lock); |
| ++mcdi->seqno; |
| + seqno = mcdi->seqno & SEQ_MASK; |
| spin_unlock_bh(&mcdi->iface_lock); |
| |
| - seqno = mcdi->seqno & SEQ_MASK; |
| xflags = 0; |
| if (mcdi->mode == MCDI_MODE_EVENTS) |
| xflags |= MCDI_HEADER_XFLAGS_EVREQ; |
| -- |
| 2.34.1 |
| |