[PATCH] fix: infiniband/hfi1: __sdma_process_event: fix refcount underflow on s00_hw_down + e40_sw_cleaned event path
From: WenTao Liang
Date: Fri Jun 26 2026 - 11:09:06 EST
When the SDMA engine is in the s00_hw_down state and receives the
e40_sw_cleaned event, the code directly calls sdma_sw_tear_down which
unconditionally performs a kref_put via sdma_put. However, no matching
sdma_get was ever executed on this path (sdma_get is only called in the
e10/e30 event paths). This causes a refcount underflow.
Skip the sdma_sw_tear_down call in the s00_hw_down + e40_sw_cleaned path
since no reference was acquired.
Cc: stable@xxxxxxxxxxxxxxx
Fixes: 7724105686e7 ("IB/hfi1: add driver files")
Signed-off-by: WenTao Liang <vulab@xxxxxxxxxxx>
---
drivers/infiniband/hw/hfi1/sdma.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
index cfd9dd0f7e81..bf35deb8aa6f 100644
--- a/drivers/infiniband/hw/hfi1/sdma.c
+++ b/drivers/infiniband/hw/hfi1/sdma.c
@@ -2539,7 +2539,6 @@ static void __sdma_process_event(struct sdma_engine *sde,
case sdma_event_e25_hw_clean_up_done:
break;
case sdma_event_e40_sw_cleaned:
- sdma_sw_tear_down(sde);
break;
case sdma_event_e50_hw_cleaned:
break;
--
2.39.5 (Apple Git-154)