diff options
author | Xiangyang Zhang <xyz.sun.ok@gmail.com> | 2020-05-17 13:46:38 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-05-19 16:15:39 +0200 |
commit | 811eb344d5b092c4f4d0e0d61508743894cf2be0 (patch) | |
tree | f8eb08e15f9ccef372845d395d23a82790327271 /drivers/staging/qlge | |
parent | 2493c61ed5de836c235ef9d4c56fdfeb012e2b59 (diff) |
staging: qlge: unmap dma when lock failed
DMA not unmapped when lock failed, this patch fixed it.
Signed-off-by: Xiangyang Zhang <xyz.sun.ok@gmail.com>
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 <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/qlge')
-rw-r--r-- | drivers/staging/qlge/qlge_main.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/qlge/qlge_main.c b/drivers/staging/qlge/qlge_main.c index a9163fb659d9..402edaeffe12 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; } |