From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fengguang Wu Subject: [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15 Date: Tue, 11 Sep 2012 22:31:36 +0800 Message-ID: <20120911143136.GA5736@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kernel-janitors@vger.kernel.org, kvm@vger.kernel.org To: Avi Kivity Return-path: Received: from mga01.intel.com ([192.55.52.88]:32906 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751803Ab2IKObn (ORCPT ); Tue, 11 Sep 2012 10:31:43 -0400 Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: Hi Avi, In the kvm/next branch, sparse warns about arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15 This is because the array definition is ctxt._regs[NR_VCPU_REGS] where NR_VCPU_REGS=9 for i386 and 17 for x86_64. It could be fixed by changing the hard coded 16 to (NR_VCPU_REGS-1). And I wonder whether you actually want NR_VCPU_REGS here? Thanks, Fengguang --- --- linux-next.orig/arch/x86/kvm/emulate.c 2012-09-11 20:14:00.537475301 +0800 +++ linux-next/arch/x86/kvm/emulate.c 2012-09-11 22:21:57.569227558 +0800 @@ -228,7 +228,7 @@ static void writeback_registers(struct x { unsigned reg; - for_each_set_bit(reg, (ulong *)&ctxt->regs_dirty, 16) + for_each_set_bit(reg, (ulong *)&ctxt->regs_dirty, NR_VCPU_REGS) ctxt->ops->write_gpr(ctxt, reg, ctxt->_regs[reg]); }