[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 4/8] x86/hvm: convert gsi_assert_count into a variable size array
On Fri, Mar 31, 2017 at 09:16:53AM -0600, Jan Beulich wrote: > >>> On 29.03.17 at 16:47, <roger.pau@xxxxxxxxxx> wrote: > > Rearrange the fields of hvm_irq so that gsi_assert_count can be converted > > into > > a variable size array and add a new field to account the number of GSIs. > > > > Due to this changes the irq member in the hvm_domain struct also needs to > > become a pointer set at runtime. > > > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > > Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> > with one possible adjustment: > > > --- a/xen/arch/x86/hvm/irq.c > > +++ b/xen/arch/x86/hvm/irq.c > > @@ -69,6 +69,7 @@ static void __hvm_pci_intx_assert( > > return; > > > > gsi = hvm_pci_intx_gsi(device, intx); > > + ASSERT(gsi < hvm_irq->nr_gsis); > > if ( hvm_irq->gsi_assert_count[gsi]++ == 0 ) > > assert_gsi(d, gsi); > > > > @@ -99,6 +100,7 @@ static void __hvm_pci_intx_deassert( > > return; > > > > gsi = hvm_pci_intx_gsi(device, intx); > > + ASSERT(gsi < hvm_irq->nr_gsis); > > --hvm_irq->gsi_assert_count[gsi]; > > These ASSERT()s certainly don't make the situation worse after > just this patch alone, but once the higher Dom0 count comes > into play them turning into nothing on release builds is sub- > optimal. In a few cases we've used (or at least have been > considering using) something like > > if ( gsi >= hvm_irq->nr_gsis) > { > ASSERT_UNREACHABLE(); > return; > } > > to avoid the array overrun even in the release build case. > Otoh it's only Dom0 which could actually cause this, so it > wouldn't be a security issue as per our current classification. > Andrew - do you have a specific opinion either way here? Yes, I think your suggestion is better, it will trigger on debug builds while not causing array overrun on production ones. Roger. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |