[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] AMD IOMMU: add missing checks



>>> On 27.08.13 at 15:52, "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
> For one we shouldn't accept IVHD tables specifying IO-APIC IDs beyond
> the limit we support (MAX_IO_APICS, currently 128).
> 
> And then we shouldn't memset() a pointer allocation of which failed.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Just to clarify - this was broken out from the earlier sent "AMD
IOMMU: allow command line overrides for broken IVRS tables", as
the changes here are clear backporting candidates.

Jan

> --- a/xen/drivers/passthrough/amd/iommu_acpi.c
> +++ b/xen/drivers/passthrough/amd/iommu_acpi.c
> @@ -674,6 +674,13 @@ static u16 __init parse_ivhd_device_spec
>              if ( IO_APIC_ID(apic) != special->handle )
>                  continue;
>  
> +            if ( special->handle >= ARRAY_SIZE(ioapic_sbdf) )
> +            {
> +                printk(XENLOG_ERR "IVHD Error: IO-APIC %#x entry beyond 
> bounds\n",
> +                       special->handle);
> +                return 0;
> +            }
> +
>              if ( ioapic_sbdf[special->handle].pin_2_idx )
>              {
>                  if ( ioapic_sbdf[special->handle].bdf == bdf &&
> @@ -943,13 +950,14 @@ static int __init parse_ivrs_table(struc
>          {
>              ioapic_sbdf[IO_APIC_ID(apic)].pin_2_idx = xmalloc_array(
>                  u16, nr_ioapic_entries[apic]);
> -            if ( !ioapic_sbdf[IO_APIC_ID(apic)].pin_2_idx )
> +            if ( ioapic_sbdf[IO_APIC_ID(apic)].pin_2_idx )
> +                memset(ioapic_sbdf[IO_APIC_ID(apic)].pin_2_idx, -1,
> +                       nr_ioapic_entries[apic] * 
> sizeof(*ioapic_sbdf->pin_2_idx));
> +            else
>              {
>                  printk(XENLOG_ERR "IVHD Error: Out of memory\n");
>                  error = -ENOMEM;
>              }
> -            memset(ioapic_sbdf[IO_APIC_ID(apic)].pin_2_idx, -1,
> -                   nr_ioapic_entries[apic] * 
> sizeof(*ioapic_sbdf->pin_2_idx));
>          }
>      }
>  




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.