usb: dwc3: pci: reject matches without software-node data
Subsystems (2)
PATCH 1/1 usb: dwc3: pci: reject matches without software-node data
A PCI driver_override bind can reach dwc3_pci_probe() with the dummy ID from pci_match_device(). Its driver_data is zero, so dwc3_pci_quirks() passes NULL to device_add_software_node(), which crashes in software_node_register().
Reject the match before enabling the device or allocating resources. All static DWC3 PCI IDs provide software-node data.
Build-tested with ARCH=arm64 defconfig and dwc3-pci.o. The runtime reproducer could not be run in this environment.
--- drivers/usb/dwc3/dwc3-pci.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/dwc3/dwc3-pci.c +3 -0
@@ -335,6 +335,9 @@ static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)int ret;struct device *dev = &pci->dev; +if (!id->driver_data) +return -ENODEV ; + ret =pcim_enable_device (pci);if (ret) {dev_err (dev,"failed to enable pci device\n" );
Signature · 1 line
2.55.0
Greg KH
maintainerQuoted 4 lines · By
A PCI
driver_overridebind can reachdwc3_pci_probe()with the dummy ID frompci_match_device(). Itsdriver_datais zero, sodwc3_pci_quirks()passes NULL todevice_add_software_node(), which crashes insoftware_node_register().
As it should. Don't do that. See the archives for many details.
Quoted 1 line
Reported-by [email protected]
This is an invalid report, as has been said in the past.
thanks,
greg k-h