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>
This commit is contained in:
parent
a2c2df8672
commit
f961f72836
|
@ -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 (dev->hdr_type != PCI_HEADER_TYPE_NORMAL) {
|
||||||
if ((header_type & PCI_HEADER_TYPE) != PCI_HEADER_TYPE_NORMAL) {
|
|
||||||
r = -EPERM;
|
r = -EPERM;
|
||||||
goto out_put;
|
goto out_put;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue