mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
util: Forbid resetting non-endpoint devices
It is destructive to attempt reset on a pci- or cardbus-bridge, the host can crash. The bridges won't contain any guest data and neither they can be passed through using vfio/stub. So, no point in allowing a reset on them. Signed-off-by: Shivaprasad G Bhat <sbhat@linux.vnet.ibm.com>
This commit is contained in:
parent
bec9b9b01a
commit
bd12889616
@ -933,6 +933,18 @@ virPCIDeviceReset(virPCIDevicePtr dev,
|
|||||||
char *drvName = NULL;
|
char *drvName = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
|
int hdrType = -1;
|
||||||
|
|
||||||
|
if (virPCIGetHeaderType(dev, &hdrType) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (hdrType != VIR_PCI_HEADER_ENDPOINT) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("Invalid attempt to reset PCI device %s. "
|
||||||
|
"Only PCI endpoint devices can be reset"),
|
||||||
|
dev->name);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) {
|
if (activeDevs && virPCIDeviceListFind(activeDevs, dev)) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
Loading…
Reference in New Issue
Block a user