From 6086b4ee38bf7f004fdff4e5f783754607da54e5 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Wed, 7 Jun 2017 09:39:28 +0200 Subject: drvs/intel/wifi/wifi: Fix regression Fix regression introduced by commit 5c026445 (drivers/intel/wifi: Add support for generating SSDT table) In case the regular PCI path is taken, there're no chip_ops and the code will segfault. The bug was covered by other bugs that caused this code to never execute. Add NULL pointer checks and only fill in device name if one is provided. Tested on Lenovo T430 and wifi card 8086:0085. Change-Id: I84e804f033bcd3af1a7f76670275fdf5159d381f Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/20082 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie --- src/drivers/intel/wifi/wifi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/drivers/intel/wifi/wifi.c b/src/drivers/intel/wifi/wifi.c index 15cb2c1a89..a71f014ced 100644 --- a/src/drivers/intel/wifi/wifi.c +++ b/src/drivers/intel/wifi/wifi.c @@ -145,7 +145,8 @@ static void intel_wifi_fill_ssdt(struct device *dev) acpigen_write_scope(path); acpigen_write_device(acpi_device_name(dev)); acpigen_write_name_integer("_UID", 0); - acpigen_write_name_string("_DDN", dev->chip_ops->name); + if (dev->chip_ops) + acpigen_write_name_string("_DDN", dev->chip_ops->name); /* Address */ address = PCI_SLOT(dev->path.pci.devfn) & 0xffff; @@ -186,7 +187,7 @@ static void intel_wifi_fill_ssdt(struct device *dev) acpigen_pop_len(); /* Scope */ printk(BIOS_INFO, "%s.%s: %s %s\n", path, acpi_device_name(dev), - dev->chip_ops->name, dev_path(dev)); + dev->chip_ops ? dev->chip_ops->name : "", dev_path(dev)); } static const char *intel_wifi_acpi_name(struct device *dev) -- cgit v1.2.3