From nobody Fri Dec 19 22:01:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26CAA216938; Sun, 24 Mar 2024 23:09:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711321765; cv=none; b=NsmBfY0f7Tyb/rNF1b/cGxAbL9Aj3/1OJFTFls+jETlhmFKRoUEumwNtt2DU9Ojt35erZQ13N+xt5HKrLnAWRQXvSMS9LTTqIybxOu+kdCABhIACcb/1/r6wIHwBNxWmb+5mjrtmOW3iNQlgkUGEtX5tqU8KGhDnmw6pDEwMJQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711321765; c=relaxed/simple; bh=NyGVQpR4RLOY36Zw3sDHzVHxgYgxuS6XHiYrBAxK3PQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ULUs5k+MXutQJx8vUzpE6wjkJZuoKVGCYwR3HaHCAs3KRmyixBC04dFyBoO6Ufk4UHwqFmPaWjHzNiSn3+3ZIIp0wJU7+YRWN6aSFIBOsFzcevptSROq7weA1Xqyn9zLMinIIR12jgeQ/Tk9Ln4EQCTIdGwAbIpRHYxoIPOLu4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Z2WNO4sV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Z2WNO4sV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65FA3C433F1; Sun, 24 Mar 2024 23:09:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711321764; bh=NyGVQpR4RLOY36Zw3sDHzVHxgYgxuS6XHiYrBAxK3PQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z2WNO4sV9or69Cxi/zdC5+Z+Sc7aniXZCXhtxNah4pSMGIlF6ayg6akZs53bdAIbZ g5uJshA6EjkAXuXreUURwCMBz3190au0sCLhlWyS6Qr2DND2lHJ+8ZHDA4LeNgOb6t 4Vf6g/YbOT6meOIXEAFVCuBmk7rzbd5KqUxngR9NSQzMYOM0xkARK1V0XKfKghFrm6 XA3Jq3DAPui9Pc02gBiY8oSYs+QcN4gd8uB7UnT4u/ORZmFCKUMf4vJqtrkBhOlBRj f7PhWa8aSiGPQ0ySbx0GXA4a5UkMigAPEv41knWEf/1Noq4tKMQHq2kRtHytwEUcXz JarUDC3Rh34/A== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Bryan O'Donoghue , Stephen Boyd , Sasha Levin Subject: [PATCH 6.6 492/638] clk: Fix clk_core_get NULL dereference Date: Sun, 24 Mar 2024 18:58:49 -0400 Message-ID: <20240324230116.1348576-493-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324230116.1348576-1-sashal@kernel.org> References: <20240324230116.1348576-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Bryan O'Donoghue [ Upstream commit e97fe4901e0f59a0bfd524578fe3768f8ca42428 ] It is possible for clk_core_get to dereference a NULL in the following sequence: clk_core_get() of_clk_get_hw_from_clkspec() __of_clk_get_hw_from_provider() __clk_get_hw() __clk_get_hw() can return NULL which is dereferenced by clk_core_get() at hw->core. Prior to commit dde4eff47c82 ("clk: Look for parents with clkdev based clk_lookups") the check IS_ERR_OR_NULL() was performed which would have caught the NULL. Reading the description of this function it talks about returning NULL but that cannot be so at the moment. Update the function to check for hw before dereferencing it and return NULL if hw is NULL. Fixes: dde4eff47c82 ("clk: Look for parents with clkdev based clk_lookups") Signed-off-by: Bryan O'Donoghue Link: https://lore.kernel.org/r/20240302-linux-next-24-03-01-simple-clock-f= ixes-v1-1-25f348a5982b@linaro.org Signed-off-by: Stephen Boyd Signed-off-by: Sasha Levin --- drivers/clk/clk.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 473563bc74960..50228cb0c5590 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -418,6 +418,9 @@ static struct clk_core *clk_core_get(struct clk_core *c= ore, u8 p_index) if (IS_ERR(hw)) return ERR_CAST(hw); =20 + if (!hw) + return NULL; + return hw->core; } =20 --=20 2.43.0