From patchwork Wed Mar 14 15:57:06 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 146657 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 21F61B6FA4 for ; Thu, 15 Mar 2012 02:58:46 +1100 (EST) Received: from localhost ([::1]:56549 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S7qb6-0006Ed-4K for incoming@patchwork.ozlabs.org; Wed, 14 Mar 2012 11:58:44 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49935) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S7qaF-0003ye-V3 for qemu-devel@nongnu.org; Wed, 14 Mar 2012 11:58:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S7qZn-0000z3-TE for qemu-devel@nongnu.org; Wed, 14 Mar 2012 11:57:51 -0400 Received: from e06smtp17.uk.ibm.com ([195.75.94.113]:45878) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S7qZn-0000yP-KD for qemu-devel@nongnu.org; Wed, 14 Mar 2012 11:57:23 -0400 Received: from /spool/local by e06smtp17.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 14 Mar 2012 15:57:19 -0000 Received: from d06nrmr1806.portsmouth.uk.ibm.com (9.149.39.193) by e06smtp17.uk.ibm.com (192.168.101.147) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 14 Mar 2012 15:57:17 -0000 Received: from d06av03.portsmouth.uk.ibm.com (d06av03.portsmouth.uk.ibm.com [9.149.37.213]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q2EFvGnA2650190 for ; Wed, 14 Mar 2012 15:57:16 GMT Received: from d06av03.portsmouth.uk.ibm.com (localhost.localdomain [127.0.0.1]) by d06av03.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q2EFvG7Y023066 for ; Wed, 14 Mar 2012 09:57:16 -0600 Received: from localhost (sig-9-145-149-233.de.ibm.com [9.145.149.233]) by d06av03.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q2EFvFmH023016; Wed, 14 Mar 2012 09:57:15 -0600 From: Stefan Hajnoczi To: Date: Wed, 14 Mar 2012 15:57:06 +0000 Message-Id: <1331740626-5053-4-git-send-email-stefanha@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.9.1 In-Reply-To: <1331740626-5053-1-git-send-email-stefanha@linux.vnet.ibm.com> References: <1331740626-5053-1-git-send-email-stefanha@linux.vnet.ibm.com> x-cbid: 12031415-0542-0000-0000-00000143F56E X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 195.75.94.113 Cc: Kevin Wolf , Paolo Bonzini , Stefan Hajnoczi Subject: [Qemu-devel] [PATCH v2 3/3] block: enforce constraints on block size properties 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 Nicolae Mogoreanu noticed that I/O requests can lead to QEMU crashes when the logical_block_size property is smaller than 512 bytes. Using the new "blocksize" property we can properly enforce constraints on the block size such that QEMU's block layer is able to operate correctly. Reported-by: Nicolae Mogoreanu Reported-by: Michael Halcrow Signed-off-by: Stefan Hajnoczi Reviewed-by: Paolo Bonzini --- block.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/block.h b/block.h index 415bb17..3df6c30 100644 --- a/block.h +++ b/block.h @@ -437,10 +437,10 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf) #define DEFINE_BLOCK_PROPERTIES(_state, _conf) \ DEFINE_PROP_DRIVE("drive", _state, _conf.bs), \ - DEFINE_PROP_UINT16("logical_block_size", _state, \ - _conf.logical_block_size, 512), \ - DEFINE_PROP_UINT16("physical_block_size", _state, \ - _conf.physical_block_size, 512), \ + DEFINE_PROP_BLOCKSIZE("logical_block_size", _state, \ + _conf.logical_block_size, 512), \ + DEFINE_PROP_BLOCKSIZE("physical_block_size", _state, \ + _conf.physical_block_size, 512), \ DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0), \ DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0), \ DEFINE_PROP_INT32("bootindex", _state, _conf.bootindex, -1), \