Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp676647ybl; Mon, 2 Dec 2019 16:44:48 -0800 (PST) X-Google-Smtp-Source: APXvYqxyvoXeLkUJTVO6XOZEiTHKhyYuKafjUwXaI0gW9VUDMHkdwuPWJ7lj0xgT0Lmlro3vORa2 X-Received: by 2002:a9d:6246:: with SMTP id i6mr1360020otk.164.1575333888130; Mon, 02 Dec 2019 16:44:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575333888; cv=none; d=google.com; s=arc-20160816; b=HFGzUAmZFOfXSP3/XHeIRqOWExfwYV7Nm7o6gZcqeAxHzQZpGmkq9UQzOfE/+TcEKh ApihuEjhDT/9EM3YPqUDonQi3f1JAweByx2PntT2SK/TULHhsQqmOVbjmnxc+xf883Tn qXLtxLqYhUJfWQxOiTNeFJH7zculmNuKyZDk4oVN1ZninSpL1zkMaubqbCCMnZHl+9Tv DWB/NogChz8Doqb7Ts0klPLB+VfGBKvS+5fi8stoagTZvTjaVXdfw/VZddWAONdM99tP EwNxyRsURRvD1JidZAAEBu0zervyr+CaxQtIffFgcPQaecWBvc4/CAx1rJHivk1OjsKF dmKA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7Er4Vc+z2ksR0zUUT5Njd+rmUl7+6DjOG6u4eDEnuSc=; b=CwY64NbOqsEWwuYO4vI2xvknMJfQrCUtz6NMi4UeM4QfSQZJ665fl8RJG3Pcew/lL0 /+SRiZSIkGU4EPSmkmNX40IsppfVbHLNi2ilfLWgRtYjeY+bM91o1zq2MK0MyZ9lhjan t0ro83LMj0Wz8ZWJ364udFAfPr/u7gAeKLIBa3plkFSWVEq+VBGYD6gSrqAYyppo4F7t mgSBZe5TglzerC7Z9m11OG1swYJgONTdMZpDQlO8zkHdhX1fuXLzLYkmTpJt1I30UBbf PzPf3kWlPhEjJCfQygmSLJuPW14Q43irVXUCQEe6CE7Z1FwS/NOtZHS+X8BAVfVzDNYi i/Ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J2lygnRY; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w2si404988otq.31.2019.12.02.16.44.36; Mon, 02 Dec 2019 16:44:48 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J2lygnRY; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727026AbfLCAm0 (ORCPT + 99 others); Mon, 2 Dec 2019 19:42:26 -0500 Received: from mail-lf1-f67.google.com ([209.85.167.67]:46866 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726805AbfLCAmQ (ORCPT ); Mon, 2 Dec 2019 19:42:16 -0500 Received: by mail-lf1-f67.google.com with SMTP id a17so1357495lfi.13; Mon, 02 Dec 2019 16:42:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7Er4Vc+z2ksR0zUUT5Njd+rmUl7+6DjOG6u4eDEnuSc=; b=J2lygnRYWnx4vzwi7HKXIyWtwvTVa7tK3dNI4j4nA95IjTgMVi4JQDgC171S1roy7z EQgJ/44YN9JumlaBJhIJYcpy7/YPktUH8i4CsIDC72ETHaQKX3XEC4Wm6YaSbhFT8Jpv TC8tM0wbxCrZ+4BsdNrNcZr8eiNOkejli/lJV9rMxTOtCQ+PwNx7YxXEL67RemehOzeT /4LT2QF2KrNTuovlKGaoZ7G+MEaT6m2husWmouNoJFFZjZlWWiuMXMeKy8DAc/gfX3r8 r4OUEe1P8jDFxw5EUamNPuadg4ybTggOvdfd90k3E8UlndMFkYY4RJwfrn4SQ7RqnJgK R1lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7Er4Vc+z2ksR0zUUT5Njd+rmUl7+6DjOG6u4eDEnuSc=; b=ZJvslJO7PeNuoc5S7f+814jE3ag8QFp6hgFb5L9H9Zga911kDXgFyoSGP33FKEGG8s jGDoXuV8WJdsfPJWpEVfYs6xj5fawSb4QyyhyOGBJF7UgSlZ44pjOJEHWzIAGNh6JXib 0e93Ljb2EPkcHKfoyjvgLPMKKuzrqhgWuWEqyaAHiLJ2RZK+fiAOEHsm+7RHZkx4/N19 sAXgV4xQsJKgn2SkLv1MRckd9mBlkK/YJTT94cCQBL7QWVKitfjURfH8e2yKlBkGtxwX ZYLhXuMVwAbzHtD725KtRaQfTmxj/zDKyjeG61CwqOZGuG1R9bDNmN37dqqIfXDb25AQ KRcw== X-Gm-Message-State: APjAAAVfVzrCMitX2CTADTrW4aqXgRuMjVs1rT6DXAt8XgynOBwOkh/I oUmqE/MFKW82nFoA+/b1+gmmjmOV X-Received: by 2002:ac2:508f:: with SMTP id f15mr992482lfm.146.1575333733523; Mon, 02 Dec 2019 16:42:13 -0800 (PST) Received: from localhost.localdomain (79-139-233-37.dynamic.spd-mgts.ru. [79.139.233.37]) by smtp.gmail.com with ESMTPSA id y21sm456384ljm.25.2019.12.02.16.42.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2019 16:42:13 -0800 (PST) From: Dmitry Osipenko To: Thierry Reding , Jonathan Hunter , Peter De Schrijver , "Rafael J. Wysocki" , Daniel Lezcano Cc: linux-pm@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v8 12/19] cpuidle: Avoid NULL dereference in cpuidle_driver_state_disabled() Date: Tue, 3 Dec 2019 03:41:09 +0300 Message-Id: <20191203004116.11771-13-digetx@gmail.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191203004116.11771-1-digetx@gmail.com> References: <20191203004116.11771-1-digetx@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The cpumask is NULL if cpuidle_driver_state_disabled() is called before cpuidle driver is initialized. This shouldn't be a problem for now because cpuidle drivers are registered quite early. The NVIDIA Tegra cpuidle driver is going to be moved to a later init stage and thus it could become a problem if PCIE driver is probed earlier than cpuidle. Signed-off-by: Dmitry Osipenko --- drivers/cpuidle/driver.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index c76423aaef4d..f8164f56c420 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c @@ -403,6 +403,9 @@ void cpuidle_driver_state_disabled(struct cpuidle_driver *drv, int idx, mutex_lock(&cpuidle_lock); + if (!drv->cpumask) + goto unlock; + for_each_cpu(cpu, drv->cpumask) { struct cpuidle_device *dev = per_cpu(cpuidle_devices, cpu); @@ -415,5 +418,6 @@ void cpuidle_driver_state_disabled(struct cpuidle_driver *drv, int idx, dev->states_usage[idx].disable &= ~CPUIDLE_STATE_DISABLED_BY_DRIVER; } +unlock: mutex_unlock(&cpuidle_lock); } -- 2.24.0