From 858a66525c60e5396298e1a8122359f70f4f5578 Mon Sep 17 00:00:00 2001 From: Wei Qin Date: Mon, 29 Dec 2025 16:51:06 +0800 Subject: [PATCH] ub: udma: bugfix related to spin lock. driver inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IDGKH0 CVE: NA ------------------------------------------------------- This patch fix a bug related to spin lock in clean jfc. Fixes: d72435589dce ("ub: udma: Support poll jfc.") Signed-off-by: Wei Qin --- drivers/ub/urma/hw/udma/udma_jfc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/ub/urma/hw/udma/udma_jfc.c b/drivers/ub/urma/hw/udma/udma_jfc.c index 50ef624629df..961dbfa28107 100644 --- a/drivers/ub/urma/hw/udma/udma_jfc.c +++ b/drivers/ub/urma/hw/udma/udma_jfc.c @@ -1068,6 +1068,7 @@ void udma_clean_jfc(struct ubcore_jfc *jfc, uint32_t jetty_id, struct udma_dev * struct udma_jfc *udma_jfc = to_udma_jfc(jfc); struct udma_jfc_cqe *dest; struct udma_jfc_cqe *cqe; + unsigned long flags; struct ubcore_cr cr; uint32_t nfreed = 0; uint32_t local_id; @@ -1078,7 +1079,7 @@ void udma_clean_jfc(struct ubcore_jfc *jfc, uint32_t jetty_id, struct udma_dev * return; if (!jfc->jfc_cfg.flag.bs.lock_free) - spin_lock(&udma_jfc->lock); + spin_lock_irqsave(&udma_jfc->lock, flags); for (pi = udma_jfc->ci; get_next_cqe(udma_jfc, pi) != NULL; ++pi) { if (pi > udma_jfc->ci + udma_jfc->buf.entry_cnt) @@ -1113,5 +1114,5 @@ void udma_clean_jfc(struct ubcore_jfc *jfc, uint32_t jetty_id, struct udma_dev * } if (!jfc->jfc_cfg.flag.bs.lock_free) - spin_unlock(&udma_jfc->lock); + spin_unlock_irqrestore(&udma_jfc->lock, flags); } -- Gitee