Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp7812510imu; Tue, 22 Jan 2019 12:06:25 -0800 (PST) X-Google-Smtp-Source: ALg8bN5Sj89vcoFZOlCvcwtUmQzQtAqKOEpWsCtcn0wCBML4GYzdm8dSCk2hrUYazzMH7HjshUgn X-Received: by 2002:a63:1a0c:: with SMTP id a12mr32694822pga.157.1548187585678; Tue, 22 Jan 2019 12:06:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548187585; cv=none; d=google.com; s=arc-20160816; b=RILy8sfFs54ID4bhzRduWZQizovVsSWnSTWiv7RApymjCftGE5QT6GecBzXZ38JmrP K8zgXUbYzCpHidQdbUjbJXBroz7qngFUwgQWdWCktKwnPwd6Ws2i2VEs6cyG9gIqaMTa AgILMFeO4e+tHe9+ETIhuejuNvgLT6IFYdpme4/S5FZfJlC4Rh4JefD+aPGCcuiuTHds w5bLjQ9ZO0EmlGrRQT9Bt0bHRGHusHeArPfjNPRfJgN4NJL36O4LkxSAyPIiLmIiGl7J rhsN3ACoy2zKQ0WfXZkBK+xpqbhnBje4aFwbN/X8/N3jmJQFUDZAI8L19nX07vfKhYR0 8bBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=nA4wbaM+Kx2u0JC6ksaO7WtjbTGsCy/YQZxPgliB0yA=; b=KN0yG0S+7tApa9ZraWbLCdufrcRjArK1VnaCIzIALC6QTbPOSLBf00NnDiwot4nN2r 1NJOG/Frshf9EX9yEQMY4AlJqPfHFmBvcV9EFm8Modw7gwE3vdpjkZwaowHQW+dx0sNT tew48ZbE5P1+hcnlYm/wnz7RaQ4vUA/rEV+phn5q7li1lnaslJf+D2zSgsbNNYcFja1E lOVCp4KeERup9+OZ+GqyJR32wFTSMTeQX2w8Wl+EaQxOxsN8HclXuln8MNGwwKGPuifC EzQ1b68hTlEODy3w21QuVt7CDgsJRB8fsu+96Kki2gquWxMalyippgy7dHZAAGwAwehx IJfw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mok.nu Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 86si18514197pfl.46.2019.01.22.12.06.08; Tue, 22 Jan 2019 12:06:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mok.nu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726178AbfAVUDo (ORCPT + 99 others); Tue, 22 Jan 2019 15:03:44 -0500 Received: from proxy01.fsdata.se ([89.221.252.211]:57437 "EHLO mail-gw01.fsdata.se" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726015AbfAVUDo (ORCPT ); Tue, 22 Jan 2019 15:03:44 -0500 Received: from localhost (94.234.43.8) by DAG01.HMC.local (192.168.46.11) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Tue, 22 Jan 2019 21:03:17 +0100 From: Mattias Jacobsson <2pi@mok.nu> To: , CC: <2pi@mok.nu>, , Subject: [PATCH] platform/x86: wmi: fix potential null pointer dereferences Date: Tue, 22 Jan 2019 21:03:01 +0100 Message-ID: <20190122200302.19861-1-2pi@mok.nu> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [94.234.43.8] X-ClientProxiedBy: PROXY05.HMC.local (192.168.46.55) To DAG01.HMC.local (192.168.46.11) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the function wmi_dev_match() there are three variables that potentially can result in a null pointer dereference. Namely: dev/wblock, driver/wmi_driver, and wmi_driver->id_table. Check for NULL and return that the driver can't handle the device if any of these variables would result in a null pointer dereference. The NULL checks are performed prior to running container_of() for the variables dev/wblock and driver/wmi_driver. Fixes: 844af950da94 ("platform/x86: wmi: Turn WMI into a bus driver") Signed-off-by: Mattias Jacobsson <2pi@mok.nu> --- drivers/platform/x86/wmi.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index bea35be68706..c596479e8b13 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -763,10 +763,18 @@ static void wmi_dev_release(struct device *dev) static int wmi_dev_match(struct device *dev, struct device_driver *driver) { - struct wmi_driver *wmi_driver = - container_of(driver, struct wmi_driver, driver); - struct wmi_block *wblock = dev_to_wblock(dev); - const struct wmi_device_id *id = wmi_driver->id_table; + const struct wmi_device_id *id; + struct wmi_block *wblock; + struct wmi_driver *wmi_driver; + + if (dev == NULL || driver == NULL) + return 0; + wblock = dev_to_wblock(dev); + wmi_driver = container_of(driver, struct wmi_driver, driver); + + if (wmi_driver->id_table == NULL) + return 0; + id = wmi_driver->id_table; while (id->guid_string) { uuid_le driver_guid; -- 2.20.1