On Wed, Aug 27, 2014 at 2:57 PM, Alex Williamson <alex.williamson@xxxxxxxxxx> wrote: > If we have a GPU on the PCI root bus that calls > drm_pcie_get_speed_cap_mask() we end up with a NULL pointer > dereference since pdev->bus->self is NULL. We already protect > against callers passing non-PCI devices, so let's also catch this > case and return -EINVAL. > > Root complex graphics are not terribly likely outside of IGD, but > when we assign a standard plugin GPU to a virtual machine, our > assumption that we have a parent device quickly becomes invalid. > > Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > > drivers/gpu/drm/drm_pci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c > index 020cfd9..411e806 100644 > --- a/drivers/gpu/drm/drm_pci.c > +++ b/drivers/gpu/drm/drm_pci.c > @@ -390,7 +390,7 @@ int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask) > u32 lnkcap, lnkcap2; > > *mask = 0; > - if (!dev->pdev) > + if (!dev->pdev || pci_is_root_bus(dev->pdev->bus)) > return -EINVAL; > > root = dev->pdev->bus->self; > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel