[Qemu-devel] [PATCH] iscsi: fix missing unlock

Paolo Bonzini posted 1 patch 7 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1488555707-14669-1-git-send-email-pbonzini@redhat.com
Test checkpatch passed
Test docker passed
block/iscsi.c | 4 ++++
1 file changed, 4 insertions(+)
[Qemu-devel] [PATCH] iscsi: fix missing unlock
Posted by Paolo Bonzini 7 years, 1 month ago
Reported by Coverity.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block/iscsi.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/block/iscsi.c b/block/iscsi.c
index 76319a1..75d8905 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -637,6 +637,7 @@ retry:
     }
 #endif
     if (iTask.task == NULL) {
+        qemu_mutex_unlock(&iscsilun->mutex);
         return -ENOMEM;
     }
 #if LIBISCSI_API_VERSION < (20160603)
@@ -864,6 +865,7 @@ retry:
     }
 #endif
     if (iTask.task == NULL) {
+        qemu_mutex_unlock(&iscsilun->mutex);
         return -ENOMEM;
     }
 #if LIBISCSI_API_VERSION < (20160603)
@@ -904,6 +906,7 @@ static int coroutine_fn iscsi_co_flush(BlockDriverState *bs)
 retry:
     if (iscsi_synchronizecache10_task(iscsilun->iscsi, iscsilun->lun, 0, 0, 0,
                                       0, iscsi_co_generic_cb, &iTask) == NULL) {
+        qemu_mutex_unlock(&iscsilun->mutex);
         return -ENOMEM;
     }
 
@@ -1237,6 +1240,7 @@ retry:
                                             0, 0, iscsi_co_generic_cb, &iTask);
     }
     if (iTask.task == NULL) {
+        qemu_mutex_unlock(&iscsilun->mutex);
         return -ENOMEM;
     }
 
-- 
1.8.3.1


Re: [Qemu-devel] [PATCH] iscsi: fix missing unlock
Posted by Philippe Mathieu-Daudé 7 years, 1 month ago
Hi Paolo,

On 03/03/2017 12:41 PM, Paolo Bonzini wrote:
> Reported by Coverity.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  block/iscsi.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/block/iscsi.c b/block/iscsi.c
> index 76319a1..75d8905 100644
> --- a/block/iscsi.c
> +++ b/block/iscsi.c
> @@ -637,6 +637,7 @@ retry:
>      }
>  #endif
>      if (iTask.task == NULL) {
> +        qemu_mutex_unlock(&iscsilun->mutex);
>          return -ENOMEM;

what about:

         r = -ENOMEM;
         goto out_unlock;

to follow the file codestyle? (same following 3)

>      }
>  #if LIBISCSI_API_VERSION < (20160603)
> @@ -864,6 +865,7 @@ retry:
>      }
>  #endif
>      if (iTask.task == NULL) {
> +        qemu_mutex_unlock(&iscsilun->mutex);
>          return -ENOMEM;
>      }
>  #if LIBISCSI_API_VERSION < (20160603)
> @@ -904,6 +906,7 @@ static int coroutine_fn iscsi_co_flush(BlockDriverState *bs)
>  retry:
>      if (iscsi_synchronizecache10_task(iscsilun->iscsi, iscsilun->lun, 0, 0, 0,
>                                        0, iscsi_co_generic_cb, &iTask) == NULL) {
> +        qemu_mutex_unlock(&iscsilun->mutex);
>          return -ENOMEM;
>      }
>
> @@ -1237,6 +1240,7 @@ retry:
>                                              0, 0, iscsi_co_generic_cb, &iTask);
>      }
>      if (iTask.task == NULL) {
> +        qemu_mutex_unlock(&iscsilun->mutex);
>          return -ENOMEM;
>      }
>
>