[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-stable] [PATCH 6/7] iscsi: simplify freeing of tasks
From: |
Paolo Bonzini |
Subject: |
[Qemu-stable] [PATCH 6/7] iscsi: simplify freeing of tasks |
Date: |
Tue, 18 Jun 2013 16:16:55 +0200 |
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: address@hidden
Signed-off-by: Paolo Bonzini <address@hidden>
---
block/iscsi.c | 35 ++++++++++-------------------------
1 file changed, 10 insertions(+), 25 deletions(-)
diff --git a/block/iscsi.c b/block/iscsi.c
index f7199c1..6171b01 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;
}
--
1.8.1.4
- [Qemu-stable] [PULL 0/7] SCSI patches for 2013-06-18 (including 1.5.1 patches), Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 1/7] scsi: reset cdrom tray statuses on scsi_disk_reset, Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 2/7] scsi-generic: fix sign extension of READ CAPACITY(10) data, Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 3/7] scsi-generic: check the return value of bdrv_aio_ioctl in execute_command, Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 7/7] iscsi: reorganize iscsi_readcapacity_sync, Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 6/7] iscsi: simplify freeing of tasks,
Paolo Bonzini <=
- [Qemu-stable] [PATCH 5/7] vhost-scsi: fix k->set_guest_notifiers() NULL dereference, Paolo Bonzini, 2013/06/18
- [Qemu-stable] [PATCH 4/7] scsi-disk: scsi-block device for scsi pass-through should not be removable, Paolo Bonzini, 2013/06/18