Browse Source

KVM: Fix PCI header check on device assignment

The masking was wrong (must have been 0x7f), and there is no need to
re-read the value as pci_setup_device already does this for us.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43339
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Jan Kiszka 13 years ago
parent
commit
f961f72836
1 changed files with 1 additions and 3 deletions
  1. 1 3
      virt/kvm/assigned-dev.c

+ 1 - 3
virt/kvm/assigned-dev.c

@@ -635,7 +635,6 @@ static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
 	int r = 0, idx;
 	int r = 0, idx;
 	struct kvm_assigned_dev_kernel *match;
 	struct kvm_assigned_dev_kernel *match;
 	struct pci_dev *dev;
 	struct pci_dev *dev;
-	u8 header_type;
 
 
 	if (!(assigned_dev->flags & KVM_DEV_ASSIGN_ENABLE_IOMMU))
 	if (!(assigned_dev->flags & KVM_DEV_ASSIGN_ENABLE_IOMMU))
 		return -EINVAL;
 		return -EINVAL;
@@ -668,8 +667,7 @@ static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
 	}
 	}
 
 
 	/* Don't allow bridges to be assigned */
 	/* Don't allow bridges to be assigned */
-	pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type);
-	if ((header_type & PCI_HEADER_TYPE) != PCI_HEADER_TYPE_NORMAL) {
+	if (dev->hdr_type != PCI_HEADER_TYPE_NORMAL) {
 		r = -EPERM;
 		r = -EPERM;
 		goto out_put;
 		goto out_put;
 	}
 	}