diff options
author | John Zhao <john.zhao@intel.com> | 2020-06-26 08:53:54 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-06-30 05:58:37 +0000 |
commit | ff4ead052b8e4706e2480e62b68c46df8bd8a7c2 (patch) | |
tree | 302f7ccc67f8b21cd4e9e0788398493c95c47913 /src/drivers/intel/pmc_mux | |
parent | bda27cd336a784d6ac55b2eb8af2635b26545fc4 (diff) | |
download | coreboot-ff4ead052b8e4706e2480e62b68c46df8bd8a7c2.tar.xz |
src/drivers/intel: 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 1429979, 1429982
TEST=Built and boot up to kernel.
Signed-off-by: John Zhao <john.zhao@intel.com>
Change-Id: If17d12861f562dc0d6c98a5c91a9d3c0360ca2c9
Reviewed-on: https://review.coreboot.org/c/coreboot/+/42835
Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/drivers/intel/pmc_mux')
-rw-r--r-- | src/drivers/intel/pmc_mux/con/con.c | 11 | ||||
-rw-r--r-- | src/drivers/intel/pmc_mux/mux.c | 10 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/drivers/intel/pmc_mux/con/con.c b/src/drivers/intel/pmc_mux/con/con.c index 08c38e8875..ad95905a9f 100644 --- a/src/drivers/intel/pmc_mux/con/con.c +++ b/src/drivers/intel/pmc_mux/con/con.c @@ -29,13 +29,20 @@ static void con_fill_ssdt(const struct device *dev) { struct drivers_intel_pmc_mux_con_config *config = dev->chip_info; struct acpi_dp *dsd; + const char *scope; + const char *name; if (!dev->enabled) return; /* Reference the existing scope and write CONx device */ - acpigen_write_scope(acpi_device_scope(dev)); - acpigen_write_device(acpi_device_name(dev)); + scope = acpi_device_scope(dev); + name = acpi_device_name(dev); + if (!scope || !name) + return; + + acpigen_write_scope(scope); + acpigen_write_device(name); acpigen_write_name_integer("_ADR", dev->path.generic.id); diff --git a/src/drivers/intel/pmc_mux/mux.c b/src/drivers/intel/pmc_mux/mux.c index 29ed1a9603..e2099152a6 100644 --- a/src/drivers/intel/pmc_mux/mux.c +++ b/src/drivers/intel/pmc_mux/mux.c @@ -13,8 +13,14 @@ static const char *mux_acpi_name(const struct device *dev) static void mux_fill_ssdt(const struct device *dev) { - acpigen_write_scope(acpi_device_scope(dev)); - acpigen_write_device(acpi_device_name(dev)); + const char *scope = acpi_device_scope(dev); + const char *name = acpi_device_name(dev); + + if (!scope || !name) + return; + + acpigen_write_scope(scope); + acpigen_write_device(name); acpigen_write_name_string("_HID", TGL_PMC_MUX_HID); acpigen_write_name_string("_DDN", dev->chip_ops->name); |