From patchwork Tue Jun 18 14:16:55 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 252371 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id B29582C00AF for ; Wed, 19 Jun 2013 01:13:23 +1000 (EST) Received: from localhost ([::1]:60572 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UowlB-0004Ji-S7 for incoming@patchwork.ozlabs.org; Tue, 18 Jun 2013 10:19:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35934) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uowin-0000T5-Ty for qemu-devel@nongnu.org; Tue, 18 Jun 2013 10:17:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uowij-0001R5-3d for qemu-devel@nongnu.org; Tue, 18 Jun 2013 10:17:21 -0400 Received: from mail-wi0-x234.google.com ([2a00:1450:400c:c05::234]:65274) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uowii-0001Qy-QU; Tue, 18 Jun 2013 10:17:17 -0400 Received: by mail-wi0-f180.google.com with SMTP id c10so3281450wiw.1 for ; Tue, 18 Jun 2013 07:17:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=YvaK21rJX3p9a5UDwf+B6WnB4Ic5yYGwgM5ciQIp62I=; b=RiLdi2+uhw6d/0NpLR0fpcfqd/FIaBjh1+/D6TYTwrOcdcdyoMK4KRjy1JqzOhVEq6 1zvsZxk7duOOIQV6Iz2L/Lywcq6bdFzOA1apCH4HHXXWnh4745bav61RI3Fhwc4Ctdf7 FjYkommq+xW9ixI6kx3MymkFbi/VliHeCXFfqru0d10ngC1KNlhp68GLMhKh3I+REGNH NJP2X5SKuaWVhnJ6M+0Xk77NjaONWdH29oPcPZR8X214U8ENG8cQCP4P70fLxi+fyyp1 6wM/7hYBbkV1UKy4fziBKT/MPlQNBVz4dCaKmNlse4H8HDvyIuu8P0/i3lhH3nnPd7+9 o4qQ== X-Received: by 10.194.48.49 with SMTP id i17mr2811884wjn.55.1371565036135; Tue, 18 Jun 2013 07:17:16 -0700 (PDT) Received: from playground.lan (net-37-116-217-184.cust.dsl.vodafone.it. [37.116.217.184]) by mx.google.com with ESMTPSA id o14sm2385861wiv.3.2013.06.18.07.17.13 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 18 Jun 2013 07:17:15 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 18 Jun 2013 16:16:55 +0200 Message-Id: <1371565016-2643-7-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1371565016-2643-1-git-send-email-pbonzini@redhat.com> References: <1371565016-2643-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::234 Cc: mdroth@linux.vnet.ibm.com, qemu-stable@nongnu.org Subject: [Qemu-devel] [PATCH 6/7] iscsi: simplify freeing of tasks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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; }