summaryrefslogtreecommitdiffstats
path: root/src/drivers/usb
diff options
context:
space:
mode:
authorJohn Zhao <john.zhao@intel.com>2020-07-14 09:07:48 -0700
committerPatrick Georgi <pgeorgi@google.com>2020-07-26 21:04:51 +0000
commitacdf5fd66ea12c3365271686371bc1d225c3f3af (patch)
treecc009f6fd141eb021b05a5425a9230baaa8de1aa /src/drivers/usb
parentf09b4b6beed16d964527d26700df6d350e3aeab0 (diff)
downloadcoreboot-acdf5fd66ea12c3365271686371bc1d225c3f3af.tar.gz
coreboot-acdf5fd66ea12c3365271686371bc1d225c3f3af.tar.bz2
coreboot-acdf5fd66ea12c3365271686371bc1d225c3f3af.zip
drivers/usb: Avoid NULL pointer dereference
Coverity detects dereferencing pointers that might be "NULL" when calling acpigen_write_scope and acpigen_write_device. Add sanity check for both of scope and name to prevent NULL pointer dereference. Found-by: Coverity CID 1430454 TEST=Built and boot up to kernel on Volteer. Signed-off-by: John Zhao <john.zhao@intel.com> Change-Id: I8ece3831bbd2641ceafbd71b9dc3db7e04a8eae4 Reviewed-on: https://review.coreboot.org/c/coreboot/+/43449 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/drivers/usb')
-rw-r--r--src/drivers/usb/pci_xhci/pci_xhci.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/drivers/usb/pci_xhci/pci_xhci.c b/src/drivers/usb/pci_xhci/pci_xhci.c
index b787127c2ff3..a375f07a8dcc 100644
--- a/src/drivers/usb/pci_xhci/pci_xhci.c
+++ b/src/drivers/usb/pci_xhci/pci_xhci.c
@@ -187,11 +187,16 @@ static void xhci_add_devices(const struct device *dev)
static void xhci_fill_ssdt(const struct device *dev)
{
int gpe;
+ const char *scope = acpi_device_scope(dev);
+ const char *name = acpi_device_name(dev);
+
+ if (!scope || !name)
+ return;
printk(BIOS_DEBUG, "xHCI SSDT generation\n");
- acpigen_write_scope(acpi_device_scope(dev));
- acpigen_write_device(acpi_device_name(dev));
+ acpigen_write_scope(scope);
+ acpigen_write_device(name);
acpigen_write_ADR_pci_device(dev);
acpigen_write_name_string("_DDN", "xHC - Extensible Host Controller");