From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJ4FY-0000Y4-Il for qemu-devel@nongnu.org; Thu, 27 Feb 2014 11:56:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WJ4FT-0005NY-0Z for qemu-devel@nongnu.org; Thu, 27 Feb 2014 11:55:56 -0500 Received: from mail-wg0-x232.google.com ([2a00:1450:400c:c00::232]:39315) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJ4FS-0005NF-QG for qemu-devel@nongnu.org; Thu, 27 Feb 2014 11:55:50 -0500 Received: by mail-wg0-f50.google.com with SMTP id l18so3213175wgh.9 for ; Thu, 27 Feb 2014 08:55:50 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Thu, 27 Feb 2014 17:55:26 +0100 Message-Id: <1393520126-13703-8-git-send-email-pbonzini@redhat.com> In-Reply-To: <1393520126-13703-1-git-send-email-pbonzini@redhat.com> References: <1393520126-13703-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 7/7] block/iscsi: fix segfault if writesame fails List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Lieven From: Peter Lieven commit fa6252b0 introduced a segfault because it tries to read iTask.task->sense after iTask.task has been freed. Signed-off-by: Peter Lieven Signed-off-by: Paolo Bonzini --- block/iscsi.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/block/iscsi.c b/block/iscsi.c index 4360cf1..0a15f53 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -836,6 +836,15 @@ retry: qemu_coroutine_yield(); } + if (iTask.status == SCSI_STATUS_CHECK_CONDITION && + iTask.task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST && + iTask.task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + /* WRITE SAME is not supported by the target */ + iscsilun->has_write_same = false; + scsi_free_scsi_task(iTask.task); + return -ENOTSUP; + } + if (iTask.task != NULL) { scsi_free_scsi_task(iTask.task); iTask.task = NULL; @@ -847,14 +856,6 @@ retry: } if (iTask.status != SCSI_STATUS_GOOD) { - if (iTask.status == SCSI_STATUS_CHECK_CONDITION && - iTask.task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST && - iTask.task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - /* WRITE SAME is not supported by the target */ - iscsilun->has_write_same = false; - return -ENOTSUP; - } - return -EIO; } -- 1.8.5.3