From nobody Wed Jun 17 07:29:12 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEBEB2DC77F for ; Thu, 23 Apr 2026 14:19:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953951; cv=none; b=QOMR6zK8sM9VavxWgJm4GG3kM0DHAH06eaNTJHUnwJEOcq71/+VsIEIGSlGOI2UiIZG8WtV1tf9aUiDpYyx65xzGLw6KN9JM45KsBgR61mRdSZpdD6oWNqvDwyoVUInSEnHOkVz11c3nGrb4wvmQAwr4HqEAjTVN9dQOoC7F4ok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953951; c=relaxed/simple; bh=QTePW60Bb9iT8APl2jkQnh+1qmdtoSopKY5nHEff6yQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tiLLyI6rF185bDoZZ9/Q/Vf8CVJ9Vm1nSSLa4XCl1x8FGqPndJO9D8YKykQrZ7glEuptKZEjhB5kFdTQNS0IYkDopo3icb5bgSjP7mKTRkt5maELLrgM5WBRFJ37gpdWZeQkRj1FoUDhE/kMKcFFXeB2g0Zaqodm7NTSHBnx4k0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=W7df00nt; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="W7df00nt" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-43eb012ac4fso4093147f8f.0 for ; Thu, 23 Apr 2026 07:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776953948; x=1777558748; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ougqSxlNHpdb7A3xiXDiO/CHpVSWdAi7241ogZispeo=; b=W7df00ntvk+mQRmKXe9AZt8KolwsyEVdYYACjCnbAohFJl6KINw/+RDXB/yh6T+wjB dGiYavqPiBeF9T8b5HpfqwbU7MCRO9EZnVzlrobBoUDCYMxrXbSmXkZ/W0Ytp9uVfSU9 GshUBxXq8cNWYXoQpE9XZSwi1yNwZQ7JzHW1S8m42BMVRoxzup5ThmB+JyMZ9WgUCiSL 9UiPumTu/R0QobMyb5kwVWI6L1ycyTTyYWvxK3lGkWUKVQvKopfTHUnKy0qZiC5qOjDN /ecVKxUuzt964REIIFDWySFp70ByzGXM92C/xWMVDD6tnxZLHyHkOahEIuM6FFiEFf7Y M47A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776953948; x=1777558748; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ougqSxlNHpdb7A3xiXDiO/CHpVSWdAi7241ogZispeo=; b=A+HSoai3d9mjrFEIWtAxPYtEK+uwK9XX59w2J6dJlDJtAwPYYoR8BIo6WkioKeYjDS Hw9onWgFH9Vim66X+1lr3xpkYme6juvKpOKdfpKOx0jwtlllT/gKLPWpGmBdIHkfA+wK C8+ItwDnW6DAxWRDdHc6/4D3gInmHa5WC7gADZ7zPMbnsEV1mIWUekEJ466R+Mpy2HEA +DvzQhDpotK+HFFfFP4prQ0yetZvOw11mcyiFaKIIinUZqJpcbN6e0j7K4czGOmu3clW 19mgR+zbpGZLRvOxl1N9ioANVhq0czArdOCwI1z6H+uEHAxKNbGpo9nuqV3ccniuEEJp D1WQ== X-Gm-Message-State: AOJu0YxKBtJkTDTVmev6n2bEmCPeSViVonP8JgAdEvfSEsnjJT6W9Eq8 DkW6KdIsj5JRQ5034BtH4eUy4qLzqQSbjLRQze1K3AH90ZCZl547ViBkxH2CD9mFgB8= X-Gm-Gg: AeBDievd8yC+/As71EvXAZYFfMPV/4a9VeRZrb+/BklI0SCtYavaCibLpEVyB558foe EqcN8hGh0ey0thFpIuKtIr0rHWp47EXhuYtvHGiHpM3PrTF/r+9iHFFWYvNrOk7z0UBHQ/oM4Nc IUgjJbefsBs9XeyEvQRP4Jpz3xe3HMiOmZwgle2Kee5ZqYqxa5CyPn3jTFmPeaRQCOfxwRVR+KS IydB9AUH/1z1SGoXGgCbsKkDTCY+K+AyUIOsCzuRoKrNDX6Ra1z+HiBT649JaHo8FH6EC/R2U6v LU231yolc7MbajdrC6screkShvjq4075Tel0Zo6LuSJypPbU4al8+T/Ige7ytdNv2vOxYX9wSct JxecnCBU4aDbS14F6Ugz4lfVmGsNIjrPEWXgRCna34Zn4pE1TEUJsd2ri5Z25topF98BCLg1GSs TszAVaF7ixolU313OoAwAoEOOZUg2I0F72/Z9EcLCPsneNO2+miVrCsDsBJDRbz5izfqlbNgikd Y9pHTW9Cl7I+r6E1Q== X-Received: by 2002:a05:6000:184d:b0:43d:e31:68d1 with SMTP id ffacd0b85a97d-43fe3dd958amr43167628f8f.21.1776953948240; Thu, 23 Apr 2026 07:19:08 -0700 (PDT) Received: from ta2.c.googlers.com (17.83.155.104.bc.googleusercontent.com. [104.155.83.17]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e4d525sm51107483f8f.31.2026.04.23.07.19.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 07:19:07 -0700 (PDT) From: Tudor Ambarus Date: Thu, 23 Apr 2026 14:19:05 +0000 Subject: [PATCH 1/4] firmware: samsung: acpm: Fix cross-thread RX length corruption Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260423-acpm-fixes-sashiko-reports-v1-1-2217b790925e@linaro.org> References: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> In-Reply-To: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peter.griffin@linaro.org, andre.draszik@linaro.org, jyescas@google.com, kernel-team@android.com, Tudor Ambarus , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776953946; l=4319; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=QTePW60Bb9iT8APl2jkQnh+1qmdtoSopKY5nHEff6yQ=; b=BkMC2rW8uMPkEzO9Se35YVwqJqHQ3jFFR6ZEBBGYlKTgiIxInLGocoIewycok7IS5US62pYih YYunIANvn+aDy7rZ3h/vhoZOl0Kgpa1G/oS+3eA4F8tRxk2AnBpX2IW X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= Sashiko identified a cross-thread RX length corruption bug when reviewing the thermal addition to ACPM [1]. When multiple threads concurrently send IPC requests, the ACPM polling mechanism can encounter responses belonging to other threads. To drain the queue, the driver saves these concurrent responses into an internal cache (`rx_data->cmd`) to be retrieved later by the owning thread. Previously, the driver incorrectly used `xfer->rxcnt` (the expected receive length of the *current* polling thread) when copying data for *other* threads into this cache. If the threads expected responses of different lengths, this resulted in buffer underflows (leading to reads of uninitialized memory) or potential buffer overflows. Fix this by replacing the boolean `response` flag in `struct acpm_rx_data` with `rxcnt`, caching the exact expected receive length for each specific transaction during transfer preparation. Use this cached length when saving concurrent responses. Consequently, ensure that `xfer->rxcnt` is explicitly zeroed in driver helpers (e.g., `acpm_dvfs_set_xfer`) for fire-and-forget messages to prevent uninitialized stack garbage from being interpreted as a massive expected receive length. Cc: stable@vger.kernel.org Fixes: a88927b534ba ("firmware: add Exynos ACPM protocol driver") Closes: https://sashiko.dev/#/patchset/20260420-acpm-tmu-v3-0-3dc8e93f0b26%= 40linaro.org [1] Signed-off-by: Tudor Ambarus --- drivers/firmware/samsung/exynos-acpm-dvfs.c | 3 +++ drivers/firmware/samsung/exynos-acpm.c | 15 ++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/firmware/samsung/exynos-acpm-dvfs.c b/drivers/firmware= /samsung/exynos-acpm-dvfs.c index 06bdf62dea1f..fdea7aa24ca0 100644 --- a/drivers/firmware/samsung/exynos-acpm-dvfs.c +++ b/drivers/firmware/samsung/exynos-acpm-dvfs.c @@ -31,6 +31,9 @@ static void acpm_dvfs_set_xfer(struct acpm_xfer *xfer, u3= 2 *cmd, size_t cmdlen, if (response) { xfer->rxcnt =3D cmdlen; xfer->rxd =3D cmd; + } else { + xfer->rxcnt =3D 0; + xfer->rxd =3D NULL; } } =20 diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/sams= ung/exynos-acpm.c index 16c46ed60837..e95edc350efa 100644 --- a/drivers/firmware/samsung/exynos-acpm.c +++ b/drivers/firmware/samsung/exynos-acpm.c @@ -104,12 +104,12 @@ struct acpm_queue { * * @cmd: pointer to where the data shall be saved. * @n_cmd: number of 32-bit commands. - * @response: true if the client expects the RX data. + * @rxcnt: expected length of the response in 32-bit words. */ struct acpm_rx_data { u32 *cmd; size_t n_cmd; - bool response; + size_t rxcnt; }; =20 #define ACPM_SEQNUM_MAX 64 @@ -199,7 +199,7 @@ static void acpm_get_saved_rx(struct acpm_chan *achan, const struct acpm_rx_data *rx_data =3D &achan->rx_data[tx_seqnum - 1]; u32 rx_seqnum; =20 - if (!rx_data->response) + if (!rx_data->rxcnt) return; =20 rx_seqnum =3D FIELD_GET(ACPM_PROTOCOL_SEQNUM, rx_data->cmd[0]); @@ -256,7 +256,7 @@ static int acpm_get_rx(struct acpm_chan *achan, const s= truct acpm_xfer *xfer) seqnum =3D rx_seqnum - 1; rx_data =3D &achan->rx_data[seqnum]; =20 - if (rx_data->response) { + if (rx_data->rxcnt) { if (rx_seqnum =3D=3D tx_seqnum) { __ioread32_copy(xfer->rxd, addr, xfer->rxcnt); rx_set =3D true; @@ -268,7 +268,8 @@ static int acpm_get_rx(struct acpm_chan *achan, const s= truct acpm_xfer *xfer) * clear yet the bitmap. It will be cleared * after the response is copied to the request. */ - __ioread32_copy(rx_data->cmd, addr, xfer->rxcnt); + __ioread32_copy(rx_data->cmd, addr, + rx_data->rxcnt); } } else { clear_bit(seqnum, achan->bitmap_seqnum); @@ -380,8 +381,8 @@ static void acpm_prepare_xfer(struct acpm_chan *achan, /* Clear data for upcoming responses */ rx_data =3D &achan->rx_data[achan->seqnum - 1]; memset(rx_data->cmd, 0, sizeof(*rx_data->cmd) * rx_data->n_cmd); - if (xfer->rxd) - rx_data->response =3D true; + /* zero means no response expected */ + rx_data->rxcnt =3D xfer->rxcnt; =20 /* Flag the index based on seqnum. (seqnum: 1~63, bitmap: 0~62) */ set_bit(achan->seqnum - 1, achan->bitmap_seqnum); --=20 2.54.0.545.g6539524ca2-goog From nobody Wed Jun 17 07:29:12 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9344C318EC4 for ; Thu, 23 Apr 2026 14:19:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953952; cv=none; b=jO6nnaKfBYVlpptsM7xVEteH7CS5BqU1Gm6KHbAk6zZCXKGl94vja8eHNbHB4stOnLLWQmeVz9kS85oDiun90tIHZoPi4ExL4udv7DoPI3pogpe3yNDgPdPfPzxI7F3oqoMqKW3+1FpojPWdw41U5i66Bf3aUEIYIO3fPw88uBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953952; c=relaxed/simple; bh=VTtVl0TWCNfgfLbp5ijesyzVwlK/9w/oJ2E+cqfjm08=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dVAnzxNJg4S87jlI/wv4UWvm8o6E5FY5qRNIVyOYEX6UnemUPQ9UzTKP5PioVhoweoyE/k/RijrJUy+p7DBouiq7GjBYJqR5mOa6wQVNFIG+akY5kAfyxDw6oPP8qX+pZIEEw7QDvlfkoFqd7TPf7hQi7MhdiUbvmUlepiNHhl8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=wgofPDmD; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="wgofPDmD" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-43fde5b81a1so5042966f8f.0 for ; Thu, 23 Apr 2026 07:19:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776953949; x=1777558749; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Tpkzzua20tAlQ0uvVtVJePBkUzc26KvQoLCnhghAYSc=; b=wgofPDmDy+Oejp5qEq5Lsec7Z/BYdEaTK1eUvKo9E+UWTwQK1Z143HA7+E8ObgdkMh xU374ou7r+34Vzqg0s80H33C4lYXxcPnVNNgJ2qIrwdcOtHKJGp5ZATqJ94JdzZD2i4B apB2Lf4HtraReBL71qKoqDDfrjD2pSkcfTEuOxNVy2ZS/8R1EnakrZaxjFSyAgNISXs8 F+oq8t+bhD1As/2jhF6H70gUQVbCZ1NMn/Mg0xOrtHAO7wwGX5AwH5C0RCss9pRz9W2h 7dqFvKJ6Odger0Vc+YVW9lnBlODckx9SAjMGb0OkOMH7KnIlIKeqty95nDsEi+bZsD6r 4R8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776953949; x=1777558749; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Tpkzzua20tAlQ0uvVtVJePBkUzc26KvQoLCnhghAYSc=; b=IPqes5wmbi1toeqgUJR+4zfbt4loB+TMs/BsxpN442UX0m66NB9rd4R/pIqK2x1bz2 +JHoerMyC6f2X/QCjnznsFwc6S5bmsAC19JQv3JOko6599nTD+EAT1SVgFbw1b81i797 33+cOJU7K3eQYhlhXyareZ9BjvREfyHNVdi/JjrVg18rE28E0GOCAktDnDV5mHTJJOs2 YrDnBEmNBlGGTaygKJmseAv+6FSevKYLQBWIz1dKI9Vu6oTaxek8d8TPwNu+2On7JEJ3 5TXU6DasVTU/KAemgnTBhOMRBascDSiYXFCTjsMbLia3uGMAOPLrVAgJnxVgGRc/i0tx u3/w== X-Gm-Message-State: AOJu0Yxv/xdxefITaNjO2c+S0v287X8x+sj2YZ1JaUWr+3O2eo+qnjfX kmfLuQse7JOWVhEHeolNwQdtpKkeMDUSK23FpF1a4fXxNKEL8OuoWrJaitfkIBBuVks= X-Gm-Gg: AeBDiesyRbdZY6PrGvHnTOuTSTORHUlH0VGlbFKbn9BC/DWaDBcYXW5TwP9fORjjlcd NGlX4BDDApxQ0CasvzI6PreKUUtfJdBpBQpFfeKHMEXCBhYM997g/onY4/O346344RktA8evD2T CPZasmYbzYZPvThsswA0ZXeY8EciudhyOGHW5NARpMdsNGwDY9zGXhQMubwVs9bpywLe8RoA1mN HugkqJTLhXCIMJzXupXwb01Coulo7f36/kQN0wGA1Jj815Vvmkj5EaleEqDoVuEOyZQ7jDHAnR9 vVJkt/iNhJwe+pdYWkxcEDfleGq/2ZljcJ0+pmdgcmmbw7Jyb2tUS4zfYa9Wdu55pVKOKW0YoRF 6WXuH2rfPaBW9IxTE+7KeWNmhlkXNO/d72k9W4XQr/oI8+yUg+bSO9ZHh8OZVMqsRctd4NIzMxT +Nqj+buB6XgaGfLeAgnMu/RUTqA9oy+8iddMbsqcucYNTPYxaXU1mVWcWnXZ8jpAJq4ECpFguXp LRHJ+FtRmy2KI91Wg== X-Received: by 2002:a05:6000:2511:b0:43c:f3ef:ee36 with SMTP id ffacd0b85a97d-43fe3e0a460mr42116126f8f.33.1776953949040; Thu, 23 Apr 2026 07:19:09 -0700 (PDT) Received: from ta2.c.googlers.com (17.83.155.104.bc.googleusercontent.com. [104.155.83.17]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e4d525sm51107483f8f.31.2026.04.23.07.19.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 07:19:08 -0700 (PDT) From: Tudor Ambarus Date: Thu, 23 Apr 2026 14:19:06 +0000 Subject: [PATCH 2/4] firmware: samsung: acpm: Fix sequence number leak and infinite loop Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260423-acpm-fixes-sashiko-reports-v1-2-2217b790925e@linaro.org> References: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> In-Reply-To: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peter.griffin@linaro.org, andre.draszik@linaro.org, jyescas@google.com, kernel-team@android.com, Tudor Ambarus , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776953946; l=2635; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=VTtVl0TWCNfgfLbp5ijesyzVwlK/9w/oJ2E+cqfjm08=; b=DYOtC6hQ0ucn9EaI7t93WN6xfszysLjwGSxnLnt8/zLOQRojSUpaUAulT4yyaGqqznnu6d/eb IAZVKMnj/bSAiKaA92rMrcQ3twPuFvC4hYcAzccEMqK1+YuZ1KzxgbP X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= Sashiko identified a sequence number leak and a possible infinite loop [1]. ACPM IPC sequence numbers are tracked via a 64-bit bitmap (`bitmap_seqnum`) to manage concurrent transactions. A bit is set when a sequence number is allocated in `acpm_prepare_xfer()`. Previously, if a transfer timed out during RX polling, or if the underlying hardware mailbox failed to send the message via `mbox_send_message()`, the allocated sequence number bit was never cleared. As these transient errors accumulate, all 63 available sequence numbers could eventually be leaked. Once the bitmap is full, the next call to `acpm_prepare_xfer()` would enter an infinite `while` loop attempting to find a free sequence number, permanently deadlocking the CPU. Fix this by ensuring the sequence number bit is explicitly cleared on all error paths: 1. In `acpm_do_xfer()`, clear the bit if the mailbox transmission fails. 2. In `acpm_dequeue_by_polling()`, clear the bit if the queue read fails or if the response times out. Cc: stable@vger.kernel.org Fixes: a88927b534ba ("firmware: add Exynos ACPM protocol driver") Closes: https://sashiko.dev/#/patchset/20260420-acpm-tmu-v3-0-3dc8e93f0b26%= 40linaro.org [1] Signed-off-by: Tudor Ambarus --- drivers/firmware/samsung/exynos-acpm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/sams= ung/exynos-acpm.c index e95edc350efa..a9baed5762d5 100644 --- a/drivers/firmware/samsung/exynos-acpm.c +++ b/drivers/firmware/samsung/exynos-acpm.c @@ -311,8 +311,10 @@ static int acpm_dequeue_by_polling(struct acpm_chan *a= chan, timeout =3D ktime_add_us(ktime_get(), ACPM_POLL_TIMEOUT_US); do { ret =3D acpm_get_rx(achan, xfer); - if (ret) + if (ret) { + clear_bit(seqnum - 1, achan->bitmap_seqnum); return ret; + } =20 if (!test_bit(seqnum - 1, achan->bitmap_seqnum)) return 0; @@ -324,6 +326,8 @@ static int acpm_dequeue_by_polling(struct acpm_chan *ac= han, dev_err(dev, "Timeout! ch:%u s:%u bitmap:%lx.\n", achan->id, seqnum, achan->bitmap_seqnum[0]); =20 + clear_bit(seqnum - 1, achan->bitmap_seqnum); + return -ETIME; } =20 @@ -455,8 +459,10 @@ int acpm_do_xfer(struct acpm_handle *handle, const str= uct acpm_xfer *xfer) writel(idx, achan->tx.front); =20 ret =3D mbox_send_message(achan->chan, (void *)&msg); - if (ret < 0) + if (ret < 0) { + clear_bit(achan->seqnum - 1, achan->bitmap_seqnum); return ret; + } =20 mbox_client_txdone(achan->chan, 0); } --=20 2.54.0.545.g6539524ca2-goog From nobody Wed Jun 17 07:29:12 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42742319857 for ; Thu, 23 Apr 2026 14:19:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953953; cv=none; b=Udi9mfsbwPHazGs/Z65mP0e+pVe/Il+CFOsQ/oDh1FHK35C9jZ5CvYFkGCVqKpgphqOtQaFH3hFFZME0l3H/OO3yp3m4KNv5dNSW7lQHsxXyREMFSkJVSHRnXbyHxm03NRZwQ4fw3YCTDH8j80BgeHrlALNCaGvILhob1+CeBec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953953; c=relaxed/simple; bh=kOgs95O6JRaZlEPi/372ZddtgKAq7o8MYF3mwzBuWXQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AofU3gyIYFK+2avH+ObdA3UqX72hsRzuT+0rWJnJPMs7BdQCE+3eq4FXtR/O+KvoDwWkwL2fpDhKq3Yvxshq0oJxxho/ar5Y/jiY4gwuQKH3TTeJTxDhkA86BOW4iy83mymr6HtXeCViejYd+95dcHTlD2/gyWGbuE/F698ZhbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=b+wahVun; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="b+wahVun" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-43fe608cb92so4662277f8f.2 for ; Thu, 23 Apr 2026 07:19:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776953950; x=1777558750; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1raj2hLcvt/ctJ88E4Z4hbSzBiYLTxybyHDMre6WH2o=; b=b+wahVun3/NbLUQRMC8TDjwlN92mMe3AHCS/m89Lo6YbtSOgcd3CL/531WGd8IniF/ lO9Y+xk+brKJRlbmxYWpKwHuZdzryhzg1Q2/omBiCqLm4oqwg6MQ89dqAJeymn56yb92 YInsflWhqTvE27YqLPqjra/23LCJ1ksOE4hc/fuFAObVqQfEAoktTMvP+WNhQJWP7Uc9 8zV18Dql7UqumZT4FevwL747zeYoymQZq/jQl5URBXpULeilfQvP6mCqWMhJlBmyYZgF VGHRtXP85/bjjgHsGTWto+Z9Rhs31EdzcJ5d7DrqEFfCKpEp8a6fMf9NL2rEoroGcqVg KHbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776953950; x=1777558750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1raj2hLcvt/ctJ88E4Z4hbSzBiYLTxybyHDMre6WH2o=; b=LssfZUnBzxzX9HUPRZ3VeM+euDzlURCNThfQ49IAnbrBh5dkGUra9ZChnqCyYA4W03 t+NzQygZdq+bGY+O1+cEuRtu54uXnPQ1Gcc5mr98poueYaQtppQVRTrg26vlvowRd1hS y3zSXk/5SmGfJ2soO1Uc9Sh0PeGNn4clizw2M82Uk19iM616meLhIl3jKEubAZH+OBLX /8ClRxnGcJhqjFxaM2HBkGEPM3H2ZWA0ytDWiCYGyFzCHVXcssnRtyzfcAZy4R2+qiDZ i2CeVI3FmMi/doNIjiaSObTyZTjWMtC+qTLVs21RgqDgx1dX/B+zyND/zpmg++Z5GNes Wv1g== X-Gm-Message-State: AOJu0YzyGAgV+dffyHvRowc3FBYRhBMX3WtKAAwATanBuImUOngk1KOq /wRltTt6LsP0pZm+yKf3JA240SB39XuRHm+oOTCQwQgOaLBoeo+n8ZmKnaKcb3ylL96DUuGP+Ra 4oPyTFc4= X-Gm-Gg: AeBDiesndar0xoo3PynrW7NlVBAUE2e9gk78zu1ohBD4nqbOMjhxS9gKfvQmHi1Pr/w kTouG5aprPFYncd/oCEoRMbtAz4xzGTDVK7vmVdFCwg4GLyRPZUSFm1wqaR28Wy9hoIYzEljplK kU3WdF+0rw1og6vTdWDGiYBx6rvFr1aG3rOAUozuRBeKoDyxpI22SBc6QDtVM8pwDDcRa/H77Ib g/jxTLcbuDkJnXKMa2IFkXwJqP2i1QnmhMDvZvRXq1CuGpORY+/+VU+YbUKDvE+sj0k76kUMTc7 uP7ZhoNNqV9MHpxmwpJE8DNjyPUBfYHEmthKYEnGI8Yv0zLjBNb0CbSp1jFePzHquOuz1/SsGgI aMKAriW/oGZr7FOrUvljOao++09nfkxFbBUORPuEcfFdghQzx2NiQ3QUo8KxbmLfXiQP6HXuRns pw2JoZKiU+yYXlpCzOv6TJ0V3RqNOI3qdlojENXKypBNe2Ly/XtML1pEkbsbbeme5RLiZrMs6bd 7RglVxtI5VjqM9SISCvLdrNNt5Z X-Received: by 2002:a5d:5f96:0:b0:43e:a73e:cc8a with SMTP id ffacd0b85a97d-43fe3e0aa94mr41477511f8f.36.1776953949571; Thu, 23 Apr 2026 07:19:09 -0700 (PDT) Received: from ta2.c.googlers.com (17.83.155.104.bc.googleusercontent.com. [104.155.83.17]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e4d525sm51107483f8f.31.2026.04.23.07.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 07:19:09 -0700 (PDT) From: Tudor Ambarus Date: Thu, 23 Apr 2026 14:19:07 +0000 Subject: [PATCH 3/4] firmware: samsung: acpm: Fix mailbox channel leak on probe error Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260423-acpm-fixes-sashiko-reports-v1-3-2217b790925e@linaro.org> References: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> In-Reply-To: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peter.griffin@linaro.org, andre.draszik@linaro.org, jyescas@google.com, kernel-team@android.com, Tudor Ambarus , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776953946; l=2175; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=kOgs95O6JRaZlEPi/372ZddtgKAq7o8MYF3mwzBuWXQ=; b=18HbsNzGpOO8k/tK09MU8TicbRqu3E9ILnKYrDV1cDHGI48yY+5TskCUogS0Dt6MibK/x9cgh gCD6yJNK1UnAM7ibtJDYED7qeoBJ+rZZTFISCeBmJY3R1GFry0GLLhk X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= Sashiko identified the leak at [1]. The ACPM driver allocates hardware mailbox channels using `mbox_request_channel()` during `acpm_channels_init()`. However, the driver lacked a `.remove` callback and did not free these channels on subsequent error paths inside `acpm_probe()`. Consequently, if a later step in the probe function failed (e.g., `platform_device_register_data()` returning an error), the mailbox channels were permanently leaked. This prevented the driver from ever successfully re-probing on a transient `-EPROBE_DEFER`. Fix this by modifying `acpm_free_mbox_chans()` to match the `devres` action signature and wrapping it with `devm_add_action_or_reset()`. This hooks the channel cleanup directly into the device's managed resource lifecycle, ensuring the channels are properly freed on probe failures or driver unbind. Cc: stable@vger.kernel.org Fixes: a88927b534ba ("firmware: add Exynos ACPM protocol driver") Closes: https://sashiko.dev/#/patchset/20260420-acpm-tmu-v3-0-3dc8e93f0b26%= 40linaro.org [1] Signed-off-by: Tudor Ambarus --- drivers/firmware/samsung/exynos-acpm.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/sams= ung/exynos-acpm.c index a9baed5762d5..896fbdc2700e 100644 --- a/drivers/firmware/samsung/exynos-acpm.c +++ b/drivers/firmware/samsung/exynos-acpm.c @@ -535,8 +535,9 @@ static int acpm_achan_alloc_cmds(struct acpm_chan *acha= n) * acpm_free_mbox_chans() - free mailbox channels. * @acpm: pointer to driver data. */ -static void acpm_free_mbox_chans(struct acpm_info *acpm) +static void acpm_free_mbox_chans(void *data) { + struct acpm_info *acpm =3D data; int i; =20 for (i =3D 0; i < acpm->num_chans; i++) @@ -658,6 +659,10 @@ static int acpm_probe(struct platform_device *pdev) if (ret) return ret; =20 + ret =3D devm_add_action_or_reset(dev, acpm_free_mbox_chans, acpm); + if (ret) + return dev_err_probe(dev, ret, "Failed to add mbox free action.\n"); + acpm_setup_ops(acpm); =20 platform_set_drvdata(pdev, acpm); --=20 2.54.0.545.g6539524ca2-goog From nobody Wed Jun 17 07:29:12 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CAB2831A56C for ; Thu, 23 Apr 2026 14:19:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953953; cv=none; b=TSVTkKhcHE0fYYuOXbRqXs4ubH/Jl1lLfClZGxqhfdJIpI+tItyLajAWk+KIinJrxskxQ9AMSHJNSA9CfBqZutWgmecCBDDCe0zI8IB2VTA8m1iKSGYiLXm/8dJSae65XSU0PzEQZP3X+v2bP/QSxs7/pDmUiSqLUF0LgyADNp0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776953953; c=relaxed/simple; bh=TrETAIBRtr5BpleipM5VXU32aMTdlU394IStlNmAoNo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d9CJ3YPtkUEuBb/thLpQ2XkcWiGQP8VF0DijyRAjXnFmdG5f62Elb0zzAK2x1zLFPsQXSHQ9HEIaZTh3eajOwivasSiXviktYlH3knFJdxBOpZATdcXy749zcK/0Jp8kaGmsVYcZsi60YFluGwRAK3Akrfuwj2fNHWaJORtppsM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=FFV+Cyub; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="FFV+Cyub" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-4411e1eba51so3316984f8f.3 for ; Thu, 23 Apr 2026 07:19:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776953950; x=1777558750; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+Mo2IeU/AaXoLyUW0cqRpgQJYVfBlAhtHpp2oMUPg6A=; b=FFV+CyubYP+ozgfBvbMITPj1BNmOhuRHMeOV+xU4zoI/IkpWUZT9xswbaCcw3MIeee Cjpkh6MnDR+GxtCiR9+Mc2Im5ZG8FqAWQmH4L5T5DsltpFLM8VuMIkjj66tfad3SJQX2 BKeHpz8Ffq2upp4H6X2OiTe1cMJbWBRw3CCH95DnUoMz7EGd9HIy7HcuWU4JckfrJllW 6L0lozPR0YmqUZPqHczg3BKizdsLrCfA0cJN1qZcugKm0vJodhYGTciBAhlyRVxHACkJ YnfF197s0p7OPzdtU3uPV82JB0gu9hhWLx54VhhUc+NjzxjnuvodRtQXcZ6e+6W/r7dL 9Pfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776953950; x=1777558750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+Mo2IeU/AaXoLyUW0cqRpgQJYVfBlAhtHpp2oMUPg6A=; b=mInpjuG9dBHoZsryGV0pVm5R5A/CHG4KneTTKovOeEOpvx4JW4MNO7qHtZFfG6hOdn 8tV6m4DrBJgeawjhS7u8ifikNctIl3uZRFen0R6bhwcgnzpLw1qHOglbf6Wbv8BEhvZa l3HHis7AfEzeLNqUATnTTwcZUE/J7UTZ6hhP2VLNgO+MXnPrbhC2pa6tHlVlTuPmK3Ef VbUUtNSM410j+Mk5xKTMEP9ePZy2Y+mM6gcprYtdD9DPXbih2gcehaYFVJNoJ5T7KM+2 HvQK9gdzL9BM+6lsTA1rLqJ9JXOEqCdN4t1DaNW2qKxWOTdzbCRIT76yiR4/tQCg4chT 6mCg== X-Gm-Message-State: AOJu0Yxwy1qq/rBVtm9AAswY9gdn7sN9R7969ZiuAHII8lnNXDQ3dHXa 9mXpzUWoxWXT/37iBDNtQqKeyoGQRA3jz5x8t1C/+Dc6LS82THUwEALAXM1e9Mf0nzA= X-Gm-Gg: AeBDies1BL7MLlS+8lixN8TKSeH61Ef1Ow+aqCIpG4Na9JpuCU5Y0FXf+goH33jfxXX hVSv9/WvtQ93yxKfuxK/HS8B4eR+ZGnGctlE8RQCV/b7DGAzqjk0wo//doWuQYJXXFdwAiZywBq 5tOH7L3bfXT4UhlAXK3FYZSo+vGOJgpd3+eEepFe3VYFZDslxrtyndkbSLI2VUGnXCF9G26rR9/ 19fCMgb251QVFcrJ9m/LelReBx9zTx2gcuLdmxSLAKrq/M7y68EUay/1iVgSf0MrGBDCUblc5k1 h2ibbQJ6itdJ3iMtVq3UTfrA0CrYZu0Qv5pA1sTJBy5hqMzZB6hKhFdYbYG3aKH/tEjODXi1Cbf UoqlilHxoxa0BBseFlV0EJlx/YeAWDFoMjPotRrhDPBDCEjBa1d6Lt8WgKT7fFpaMcKZXzyrDg/ zht2yTVRcOTk2wX6MkQlNFPvT3n7PsQT2MRahO/vAEf5FazwQMv2UH++8cqAwdTsgrtRLFQROg1 0KzHZu98r25f+Gx5g== X-Received: by 2002:a5d:4ed2:0:b0:43f:ea25:20ff with SMTP id ffacd0b85a97d-43fea252120mr26389443f8f.29.1776953950228; Thu, 23 Apr 2026 07:19:10 -0700 (PDT) Received: from ta2.c.googlers.com (17.83.155.104.bc.googleusercontent.com. [104.155.83.17]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e4d525sm51107483f8f.31.2026.04.23.07.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 07:19:09 -0700 (PDT) From: Tudor Ambarus Date: Thu, 23 Apr 2026 14:19:08 +0000 Subject: [PATCH 4/4] firmware: samsung: acpm: Fix dummy stubs to return ERR_PTR Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260423-acpm-fixes-sashiko-reports-v1-4-2217b790925e@linaro.org> References: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> In-Reply-To: <20260423-acpm-fixes-sashiko-reports-v1-0-2217b790925e@linaro.org> To: Krzysztof Kozlowski , Alim Akhtar Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peter.griffin@linaro.org, andre.draszik@linaro.org, jyescas@google.com, kernel-team@android.com, Tudor Ambarus , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776953946; l=1843; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=TrETAIBRtr5BpleipM5VXU32aMTdlU394IStlNmAoNo=; b=i79vicUFzY3Onqf5OYj/Gpp1I7cWGIKf2Gu04oPG78VdXvKe/mM1tWjxIiGpqqhWXVO7u+3NR a963qJxKznSA4ZndiD2phqglKzLbYatsVVbBB1pq3M36X6MzqSjxJ6G X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= Sashiko identified a potential NULL pointer dereference [1]. The dummy stub implementation for devm_acpm_get_by_node() returns NULL when CONFIG_EXYNOS_ACPM_PROTOCOL is disabled. However, the active implementation of this function returns an ERR_PTR on failure, and the consumer driver checks the return value using IS_ERR(). Because IS_ERR(NULL) evaluates to false, returning NULL from the stub tricks consumer drivers into treating the NULL return as a valid handle. Subsequent attempts to access handle->ops result in a fatal NULL pointer dereference. Fix this by returning ERR_PTR(-ENODEV) in the disabled configuration to correctly propagate the disabled state and match the API contract. Cc: stable@vger.kernel.org Fixes: 6837c006d4e7 ("firmware: exynos-acpm: add empty method to allow comp= ile test") Closes: https://sashiko.dev/#/patchset/20260420-acpm-tmu-v3-0-3dc8e93f0b26%= 40linaro.org [1] Signed-off-by: Tudor Ambarus --- include/linux/firmware/samsung/exynos-acpm-protocol.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/firmware/samsung/exynos-acpm-protocol.h b/includ= e/linux/firmware/samsung/exynos-acpm-protocol.h index 13f17dc4443b..d4db2796a6fb 100644 --- a/include/linux/firmware/samsung/exynos-acpm-protocol.h +++ b/include/linux/firmware/samsung/exynos-acpm-protocol.h @@ -8,6 +8,7 @@ #ifndef __EXYNOS_ACPM_PROTOCOL_H #define __EXYNOS_ACPM_PROTOCOL_H =20 +#include #include =20 struct acpm_handle; @@ -57,7 +58,7 @@ struct acpm_handle *devm_acpm_get_by_node(struct device *= dev, static inline struct acpm_handle *devm_acpm_get_by_node(struct device *dev, struct device_node *np) { - return NULL; + return ERR_PTR(-ENODEV); } #endif =20 --=20 2.54.0.545.g6539524ca2-goog