public inbox for linux-s390@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net/smc: delete buf_desc from buffer list under lock protection
@ 2024-07-31  9:31 Wen Gu
  2024-07-31 10:32 ` shaozhengchao
  0 siblings, 1 reply; 5+ messages in thread
From: Wen Gu @ 2024-07-31  9:31 UTC (permalink / raw)
  To: wenjia, jaka, davem, edumazet, kuba, pabeni
  Cc: alibuda, tonylu, guwen, linux-s390, netdev, linux-kernel

The operations to link group buffer list should be protected by
sndbufs_lock or rmbs_lock. So fix it.

Fixes: 3e034725c0d8 ("net/smc: common functions for RMBs and send buffers")
Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
---
 net/smc/smc_core.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c
index 3b95828d9976..ecfea8c38da9 100644
--- a/net/smc/smc_core.c
+++ b/net/smc/smc_core.c
@@ -1368,18 +1368,24 @@ static void __smc_lgr_free_bufs(struct smc_link_group *lgr, bool is_rmb)
 {
 	struct smc_buf_desc *buf_desc, *bf_desc;
 	struct list_head *buf_list;
+	struct rw_semaphore *lock;
 	int i;
 
 	for (i = 0; i < SMC_RMBE_SIZES; i++) {
-		if (is_rmb)
+		if (is_rmb) {
 			buf_list = &lgr->rmbs[i];
-		else
+			lock = &lgr->rmbs_lock;
+		} else {
 			buf_list = &lgr->sndbufs[i];
+			lock = &lgr->sndbufs_lock;
+		}
+		down_write(lock);
 		list_for_each_entry_safe(buf_desc, bf_desc, buf_list,
 					 list) {
 			list_del(&buf_desc->list);
 			smc_buf_free(lgr, is_rmb, buf_desc);
 		}
+		up_write(lock);
 	}
 }
 
-- 
2.32.0.3.g01195cf9f


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-08-05  9:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-31  9:31 [PATCH net] net/smc: delete buf_desc from buffer list under lock protection Wen Gu
2024-07-31 10:32 ` shaozhengchao
2024-08-02  1:55   ` Wen Gu
2024-08-05  8:23     ` Wenjia Zhang
2024-08-05  9:31       ` Wen Gu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox