diff options
author | Vivek Gautam <gautam.vivek@samsung.com> | 2012-09-22 18:11:19 +0530 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2012-10-17 03:48:53 +0100 |
commit | 47fe88540de43b9ee65f1c1e52483ce2f0e77968 (patch) | |
tree | 7ef82418abf113a2a71d918404057661b230820c /drivers/usb/host/xhci.c | |
parent | 2d74f106e8696f8c629324f7630be5fa0fc15bbc (diff) | |
download | kernel_samsung_smdk4412-47fe88540de43b9ee65f1c1e52483ce2f0e77968.zip kernel_samsung_smdk4412-47fe88540de43b9ee65f1c1e52483ce2f0e77968.tar.gz kernel_samsung_smdk4412-47fe88540de43b9ee65f1c1e52483ce2f0e77968.tar.bz2 |
usb: host: xhci: Fix Null pointer dereferencing with 71c731a for non-x86 systems
commit 457a73d346187c2cc5d599072f38676f18f130e0 upstream.
In 71c731a: usb: host: xhci: Fix Compliance Mode on SN65LVPE502CP Hardware
when extracting DMI strings (vendor or product_name) to mark them as quirk
we may get NULL pointer in case of non-x86 systems which won't define
CONFIG_DMI. Hence susbsequent strstr() calls crash while driver probing.
So, returning 'false' here in case we get a NULL vendor or product_name.
This is tested with ARM (exynos) system.
This patch should be backported to stable kernels as old as 3.6, that
contain the commit 71c731a296f1b08a3724bd1b514b64f1bda87a23 "usb: host:
xhci: Fix Compliance Mode on SN65LVPE502CP Hardware"
Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Reported-by: Sebastian Gottschall (DD-WRT) <s.gottschall@dd-wrt.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'drivers/usb/host/xhci.c')
-rw-r--r-- | drivers/usb/host/xhci.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 9322aae..f5c0f38 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -463,6 +463,8 @@ static bool compliance_mode_recovery_timer_quirk_check(void) dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME); dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR); + if (!dmi_product_name || !dmi_sys_vendor) + return false; if (!(strstr(dmi_sys_vendor, "Hewlett-Packard"))) return false; |