diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2013-05-31 13:47:08 +0200 |
---|---|---|
committer | Michael Roth <mdroth@linux.vnet.ibm.com> | 2013-06-18 13:00:25 -0500 |
commit | 1b94fc4b9aeee5c9ce658a0486315ec20ea371d0 (patch) | |
tree | 6083cf0cad98f36d4a7bd660a16b1efea325337a | |
parent | 5e690bb9748e50e0deb406e982a17c0c7b6e65cf (diff) |
iscsi: simplify freeing of tasks
Always free them in the iscsi_aio_*_acb functions and remove the
checks in their callers. Remove ifs when the task struct was
previously dereferenced (spotted by Coverity).
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit f0d2a4d4d63dd2f0f3ecb2d591b979b0e7f24a22)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r-- | block/iscsi.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/block/iscsi.c b/block/iscsi.c index f7199c1abb..6171b01bec 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -218,10 +218,8 @@ iscsi_aio_write16_cb(struct iscsi_context *iscsi, int status, if (status == SCSI_STATUS_CHECK_CONDITION && acb->task->sense.key == SCSI_SENSE_UNIT_ATTENTION && acb->retries-- > 0) { - if (acb->task != NULL) { - scsi_free_scsi_task(acb->task); - acb->task = NULL; - } + scsi_free_scsi_task(acb->task); + acb->task = NULL; if (iscsi_aio_writev_acb(acb) == 0) { iscsi_set_events(acb->iscsilun); return; @@ -303,6 +301,7 @@ iscsi_aio_writev_acb(IscsiAIOCB *acb) acb); #endif if (ret != 0) { + scsi_free_scsi_task(acb->task); g_free(acb->buf); return -1; } @@ -333,9 +332,6 @@ iscsi_aio_writev(BlockDriverState *bs, int64_t sector_num, acb->retries = ISCSI_CMD_RETRIES; if (iscsi_aio_writev_acb(acb) != 0) { - if (acb->task) { - scsi_free_scsi_task(acb->task); - } qemu_aio_release(acb); return NULL; } @@ -364,10 +360,8 @@ iscsi_aio_read16_cb(struct iscsi_context *iscsi, int status, if (status == SCSI_STATUS_CHECK_CONDITION && acb->task->sense.key == SCSI_SENSE_UNIT_ATTENTION && acb->retries-- > 0) { - if (acb->task != NULL) { - scsi_free_scsi_task(acb->task); - acb->task = NULL; - } + scsi_free_scsi_task(acb->task); + acb->task = NULL; if (iscsi_aio_readv_acb(acb) == 0) { iscsi_set_events(acb->iscsilun); return; @@ -445,6 +439,7 @@ iscsi_aio_readv_acb(IscsiAIOCB *acb) NULL, acb); if (ret != 0) { + scsi_free_scsi_task(acb->task); return -1; } @@ -480,9 +475,6 @@ iscsi_aio_readv(BlockDriverState *bs, int64_t sector_num, acb->retries = ISCSI_CMD_RETRIES; if (iscsi_aio_readv_acb(acb) != 0) { - if (acb->task) { - scsi_free_scsi_task(acb->task); - } qemu_aio_release(acb); return NULL; } @@ -509,10 +501,8 @@ iscsi_synccache10_cb(struct iscsi_context *iscsi, int status, if (status == SCSI_STATUS_CHECK_CONDITION && acb->task->sense.key == SCSI_SENSE_UNIT_ATTENTION && acb->retries-- > 0) { - if (acb->task != NULL) { - scsi_free_scsi_task(acb->task); - acb->task = NULL; - } + scsi_free_scsi_task(acb->task); + acb->task = NULL; if (iscsi_aio_flush_acb(acb) == 0) { iscsi_set_events(acb->iscsilun); return; @@ -589,10 +579,8 @@ iscsi_unmap_cb(struct iscsi_context *iscsi, int status, if (status == SCSI_STATUS_CHECK_CONDITION && acb->task->sense.key == SCSI_SENSE_UNIT_ATTENTION && acb->retries-- > 0) { - if (acb->task != NULL) { - scsi_free_scsi_task(acb->task); - acb->task = NULL; - } + scsi_free_scsi_task(acb->task); + acb->task = NULL; if (iscsi_aio_discard_acb(acb) == 0) { iscsi_set_events(acb->iscsilun); return; @@ -647,9 +635,6 @@ iscsi_aio_discard(BlockDriverState *bs, acb->retries = ISCSI_CMD_RETRIES; if (iscsi_aio_discard_acb(acb) != 0) { - if (acb->task) { - scsi_free_scsi_task(acb->task); - } qemu_aio_release(acb); return NULL; } |