From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44232) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZoxbZ-0006Ev-SO for qemu-devel@nongnu.org; Wed, 21 Oct 2015 13:55:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZoxbV-0006ok-8e for qemu-devel@nongnu.org; Wed, 21 Oct 2015 13:55:17 -0400 Received: from e36.co.us.ibm.com ([32.97.110.154]:54330) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZoxbV-0006nn-1p for qemu-devel@nongnu.org; Wed, 21 Oct 2015 13:55:13 -0400 Received: from localhost by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 21 Oct 2015 11:55:12 -0600 From: Michael Roth Date: Wed, 21 Oct 2015 12:51:34 -0500 Message-Id: <1445449930-23525-5-git-send-email-mdroth@linux.vnet.ibm.com> In-Reply-To: <1445449930-23525-1-git-send-email-mdroth@linux.vnet.ibm.com> References: <1445449930-23525-1-git-send-email-mdroth@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 04/40] block/iscsi: validate block size returned from target List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Lieven , qemu-stable@nongnu.org, Michael Roth From: Peter Lieven It has been reported that at least tgtd returns a block size of 0 for LUN 0. To avoid running into divide by zero later on and protect against other problematic block sizes validate the block size right at connection time. Cc: qemu-stable@nongnu.org Reported-by: Andrey Korolyov Signed-off-by: Peter Lieven Message-Id: <1439552016-8557-1-git-send-email-pl@kamp.de> Signed-off-by: Paolo Bonzini (cherry picked from commit 6d1f252d8c1ba73bf6ed9af28731a9c9c3d473a2) Signed-off-by: Michael Roth --- block/iscsi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/block/iscsi.c b/block/iscsi.c index 5002916..93f1ee4 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -1214,6 +1214,10 @@ static void iscsi_readcapacity_sync(IscsiLun *iscsilun, Error **errp) if (task == NULL || task->status != SCSI_STATUS_GOOD) { error_setg(errp, "iSCSI: failed to send readcapacity10 command."); + } else if (!iscsilun->block_size || + iscsilun->block_size % BDRV_SECTOR_SIZE) { + error_setg(errp, "iSCSI: the target returned an invalid " + "block size of %d.", iscsilun->block_size); } if (task) { scsi_free_scsi_task(task); -- 1.9.1