Skip to content

Commit

Permalink
vfio-pci: Fix the check on pci device type in vfio_pci_probe()
Browse files Browse the repository at this point in the history
Current vfio-pci just supports normal pci device, so vfio_pci_probe() will
return if the pci device is not a normal device. While current code makes a
mistake. PCI_HEADER_TYPE is the offset in configuration space of the device
type, but we use this value to mask the type value.

This patch fixs this by do the check directly on the pci_dev->hdr_type.

Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: stable@vger.kernel.org # v3.6+
  • Loading branch information
Wei Yang authored and Alex Williamson committed Jan 7, 2015
1 parent b1940cd commit 7c2e211
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions drivers/vfio/pci/vfio_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -840,13 +840,11 @@ static const struct vfio_device_ops vfio_pci_ops = {

static int vfio_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
u8 type;
struct vfio_pci_device *vdev;
struct iommu_group *group;
int ret;

pci_read_config_byte(pdev, PCI_HEADER_TYPE, &type);
if ((type & PCI_HEADER_TYPE) != PCI_HEADER_TYPE_NORMAL)
if (pdev->hdr_type != PCI_HEADER_TYPE_NORMAL)
return -EINVAL;

group = iommu_group_get(&pdev->dev);
Expand Down

0 comments on commit 7c2e211

Please sign in to comment.