From 811eb344d5b092c4f4d0e0d61508743894cf2be0 Mon Sep 17 00:00:00 2001 From: Xiangyang Zhang Date: Sun, 17 May 2020 13:46:38 +0800 Subject: [PATCH] staging: qlge: unmap dma when lock failed DMA not unmapped when lock failed, this patch fixed it. Signed-off-by: Xiangyang Zhang Fixes: 4322c5bee85e ("qlge: Expand coverage of hw lock for config register.") Link: https://lore.kernel.org/r/20200517054638.10764-1-xyz.sun.ok@gmail.com Signed-off-by: Greg Kroah-Hartman --- drivers/staging/qlge/qlge_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/staging/qlge/qlge_main.c b/drivers/staging/qlge/qlge_main.c index a9163fb..402edae 100644 --- a/drivers/staging/qlge/qlge_main.c +++ b/drivers/staging/qlge/qlge_main.c @@ -227,7 +227,7 @@ int ql_write_cfg(struct ql_adapter *qdev, void *ptr, int size, u32 bit, status = ql_sem_spinlock(qdev, SEM_ICB_MASK); if (status) - return status; + goto lock_failed; status = ql_wait_cfg(qdev, bit); if (status) { @@ -249,6 +249,7 @@ int ql_write_cfg(struct ql_adapter *qdev, void *ptr, int size, u32 bit, status = ql_wait_cfg(qdev, bit); exit: ql_sem_unlock(qdev, SEM_ICB_MASK); /* does flush too */ +lock_failed: dma_unmap_single(&qdev->pdev->dev, map, size, direction); return status; } -- 2.7.4