* [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15
@ 2012-09-11 14:31 Fengguang Wu
2012-09-12 5:58 ` Amos Kong
0 siblings, 1 reply; 4+ messages in thread
From: Fengguang Wu @ 2012-09-11 14:31 UTC (permalink / raw)
To: Avi Kivity; +Cc: kernel-janitors, kvm
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]);
}
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15
2012-09-11 14:31 [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15 Fengguang Wu
@ 2012-09-12 5:58 ` Amos Kong
2012-09-12 6:07 ` Fengguang Wu
0 siblings, 1 reply; 4+ messages in thread
From: Amos Kong @ 2012-09-12 5:58 UTC (permalink / raw)
To: Fengguang Wu; +Cc: Avi Kivity, kernel-janitors, kvm
On 11/09/12 22:31, Fengguang Wu wrote:
> 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).
Hi Fengguang,
You replaced 16 to NR_VCPU_REGS in your patch, not (NR_VCPU_REGS-1).
I guess it's a mistake in your commitlog, right?
> 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]);
> }
>
--
Amos.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15
2012-09-12 5:58 ` Amos Kong
@ 2012-09-12 6:07 ` Fengguang Wu
2012-09-12 7:37 ` Avi Kivity
0 siblings, 1 reply; 4+ messages in thread
From: Fengguang Wu @ 2012-09-12 6:07 UTC (permalink / raw)
To: Amos Kong; +Cc: Avi Kivity, kernel-janitors, kvm
On Wed, Sep 12, 2012 at 01:58:22PM +0800, Amos Kong wrote:
> On 11/09/12 22:31, Fengguang Wu wrote:
> >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).
>
> Hi Fengguang,
>
> You replaced 16 to NR_VCPU_REGS in your patch, not (NR_VCPU_REGS-1).
> I guess it's a mistake in your commitlog, right?
16 == (NR_VCPU_REGS-1). So I mean, if replacing 16 with (NR_VCPU_REGS-1),
there will be no behavior change for the x86_64 case. However I
*suspect* the right value is (NR_VCPU_REGS), as I said in the below
sentence.
> >And I wonder whether you actually want NR_VCPU_REGS here?
For your convenience, here is the relevant code for NR_VCPU_REGS:
enum kvm_reg {
VCPU_REGS_RAX = 0,
VCPU_REGS_RCX = 1,
VCPU_REGS_RDX = 2,
VCPU_REGS_RBX = 3,
VCPU_REGS_RSP = 4,
VCPU_REGS_RBP = 5,
VCPU_REGS_RSI = 6,
VCPU_REGS_RDI = 7,
#ifdef CONFIG_X86_64
VCPU_REGS_R8 = 8,
VCPU_REGS_R9 = 9,
VCPU_REGS_R10 = 10,
VCPU_REGS_R11 = 11,
VCPU_REGS_R12 = 12,
VCPU_REGS_R13 = 13,
VCPU_REGS_R14 = 14,
VCPU_REGS_R15 = 15,
#endif
VCPU_REGS_RIP,
==> NR_VCPU_REGS
};
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]);
> > }
> >
>
>
> --
> Amos.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15
2012-09-12 6:07 ` Fengguang Wu
@ 2012-09-12 7:37 ` Avi Kivity
0 siblings, 0 replies; 4+ messages in thread
From: Avi Kivity @ 2012-09-12 7:37 UTC (permalink / raw)
To: Fengguang Wu; +Cc: Amos Kong, kernel-janitors, kvm
On 09/12/2012 09:07 AM, Fengguang Wu wrote:
> On Wed, Sep 12, 2012 at 01:58:22PM +0800, Amos Kong wrote:
>> On 11/09/12 22:31, Fengguang Wu wrote:
>> >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).
>>
>> Hi Fengguang,
>>
>> You replaced 16 to NR_VCPU_REGS in your patch, not (NR_VCPU_REGS-1).
>> I guess it's a mistake in your commitlog, right?
>
> 16 == (NR_VCPU_REGS-1). So I mean, if replacing 16 with (NR_VCPU_REGS-1),
> there will be no behavior change for the x86_64 case. However I
> *suspect* the right value is (NR_VCPU_REGS), as I said in the below
> sentence.
>
>> >And I wonder whether you actually want NR_VCPU_REGS here?
>
> For your convenience, here is the relevant code for NR_VCPU_REGS:
>
> enum kvm_reg {
> VCPU_REGS_RAX = 0,
> VCPU_REGS_RCX = 1,
> VCPU_REGS_RDX = 2,
> VCPU_REGS_RBX = 3,
> VCPU_REGS_RSP = 4,
> VCPU_REGS_RBP = 5,
> VCPU_REGS_RSI = 6,
> VCPU_REGS_RDI = 7,
> #ifdef CONFIG_X86_64
> VCPU_REGS_R8 = 8,
> VCPU_REGS_R9 = 9,
> VCPU_REGS_R10 = 10,
> VCPU_REGS_R11 = 11,
> VCPU_REGS_R12 = 12,
> VCPU_REGS_R13 = 13,
> VCPU_REGS_R14 = 14,
> VCPU_REGS_R15 = 15,
> #endif
> VCPU_REGS_RIP,
> ==> NR_VCPU_REGS
> };
The right value is NR-1, since the loop excludes RIP.
Note the warning does not point to an actual error, since the high bits
of regs_dirty will be clear on i386.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-09-12 7:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-11 14:31 [kvm:next 1/1] arch/x86/kvm/emulate.c:232 writeback_registers() error: buffer overflow 'ctxt->_regs' 9 <= 15 Fengguang Wu
2012-09-12 5:58 ` Amos Kong
2012-09-12 6:07 ` Fengguang Wu
2012-09-12 7:37 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).