From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 32D9833D515 for ; Thu, 19 Feb 2026 11:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771500015; cv=none; b=L4ttLO7eVAZ0syYEWanUJIsZqiAJg9vOMivdSZ8R3eLFzUV4LKNGU0DAskNh+PBve20K8jY5XasOHeFtWF0/hLHUErNe7BG9AlSmvu1DxiLWLOvEmub/8LxypPJivjkVrSRVcWZKusdJ1p01UFMUYABs+MgUVZOl12TX40/GKxo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771500015; c=relaxed/simple; bh=7SI3pNlFJcJxczuftGfGka9em3SqZ3kPpBvA2zpQvVo=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=mdGjabvUsMhSqu40JTomF1xy+oGHHxVF5Y1yhIN7DZ/k6DM6czZXJFuo1CAq6pkw3HQDBLSNWtZSlbH/52UNN8h6fF/Uzxz/Hxus+tFopjY3ICfZs1/BpJ3ePe9/P7cZtXW6aS0p2sFIietaOr3k7H54W88qChpctzkIx7tGn00= 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=X9FEC5od; arc=none smtp.client-ip=209.85.221.50 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="X9FEC5od" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-43590777e22so497420f8f.3 for ; Thu, 19 Feb 2026 03:20:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1771500011; x=1772104811; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Gb+ajUpfigq+RIG2NV/9p+NS7XUIm6gYBjHjGxo/4ws=; b=X9FEC5odHAVc2DVZXvzhdl8eZoJMejMRgziz25Maus0y1jwkgPHthw49/xpKZ/nYhB 9CyMOuAfPRbGg6CMOmcjArsS78yTqmi1yJUuQoxF9H2m9OOIQwfhOGiNz3incGehX3GZ iVbWrRHFurta1FRBwrtRSzTSsN/9OG8qyCO7+fR8M/Xawn7bEGIMPynR9mexym5f2yyQ sorU5uTxI8K5PK5MYHN1g8st89cetIRJ40Pig5hkUAzYok3ecPiaipytfmgBzDu4Ej0w wfiQVivGe5XcoFd8jcWTbf3A51ZLT5lQLjywJXZoWjGI8wLa1OrQe+M2vA6I/3ZLC1gD IxJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771500011; x=1772104811; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Gb+ajUpfigq+RIG2NV/9p+NS7XUIm6gYBjHjGxo/4ws=; b=OvTzUUjva20Heqiyq+G6v3c++JWTVpC6kkdbASAFkP9jBganE4UZu7sGfyWv/H2N7W rMMYRa+MRv18gou+PxKEPO2FTsMSWxywZMonfcU7gRWV276Hph26zp+HNGNDi2G66Rsi 4/frW7rXebOKt869M+C1YaCAar2x0uN08uK/Zy62L+fv9wDX40f7E4rZvR8gaGb1Xex3 zk6IvTXO+mPFdw6+3uE7XtcSkjAISIVoGB5N9L+dtlRYaxWuXMSNkPbUseOU0J1WaZMi sJUE58BiZrhI6GY3t7AoPr8T4w2Gkc5EgFGSYjsH1YglErP4G0T2igLTO32GFLY4m9Y8 bjMQ== X-Gm-Message-State: AOJu0YzbPpYJjf6g3hL2KG8SB6nnUN+GF2E/wpIn1yFlpv2d4InKMdEF M1kgLyk/EZObbuokr1jEPmrNxf6Il8wDmA6Y5g4Yv95EGCmA5c/gGitjHUw/ApLX6gI= X-Gm-Gg: AZuq6aLSes/osEGKlabQ6HzBedBi/x+TbhKxSMmfHh4ajISlU4pSlh5uGW8GrHhgXCW v8Loyze4cWYZ6lX5QhcltBSIFcKnubMlrs/D7InI3D4dHvCL0snHTh5dSYEMleGgJ+xrVTgco+/ grFEx7a0JNKJey/Q4eptQDNPvZzY33b3dx3TyxtwJN26ftzCzYvOF9QGyn+hOBpo3jhuhySh1WL 68Mit5K8ka+5/YMI4Mn6X781IwqPRdY+RzSziYj/SdNSfASKERxxbWBNcLmTm8EZSIC+ro7mfhh 6+VxTa2e/wWBfS+ntdnzKK7HWmhATtNNlUBumOh7OvhVe9ryyUGZRTWle3uOyl5sGqtrneoTZ0i hag1UBsFRZiO+0sphi/LGCwNmQdZ/U1BKSGWaXINnyUGwK42UNcPFsgS3FFzy9f8QiRHG17N44P HAElb2C/gnaozTzI2OcIsfU65Tayl5U1Ya X-Received: by 2002:a05:6000:144b:b0:431:808:2d58 with SMTP id ffacd0b85a97d-4379db98611mr32771301f8f.51.1771500011417; Thu, 19 Feb 2026 03:20:11 -0800 (PST) Received: from [10.11.12.108] ([79.115.63.134]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43796ac800esm51473650f8f.27.2026.02.19.03.20.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 19 Feb 2026 03:20:11 -0800 (PST) Message-ID: <47bbcacc-32be-4a64-9ce6-9b441622e84e@linaro.org> Date: Thu, 19 Feb 2026 13:20:09 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH RFT 3/3] firmware: exynos-acpm: Count acpm_xfer buffers with __counted_by_ptr To: Krzysztof Kozlowski , Krzysztof Kozlowski , Alim Akhtar , Kees Cook , "Gustavo A. R. Silva" , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hardening@vger.kernel.org, llvm@lists.linux.dev References: <20260214-firmare-acpm-counted-v1-0-32af5735470e@oss.qualcomm.com> <20260214-firmare-acpm-counted-v1-3-32af5735470e@oss.qualcomm.com> Content-Language: en-US From: Tudor Ambarus In-Reply-To: <20260214-firmare-acpm-counted-v1-3-32af5735470e@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2/14/26 2:39 PM, Krzysztof Kozlowski wrote: > Use __counted_by_ptr() attribute on the acpm_xfer buffers so UBSAN will > validate runtime that we do not pass over the buffer size, thus making > code safer. > > Usage of __counted_by_ptr() (or actually __counted_by()) requires that > counter is initialized before counted array. > > Signed-off-by: Krzysztof Kozlowski > > --- > > __counted_by_ptr() actually maps to __counted_by() for clang v20. > Alternatively we could introduce new __sized_by(), already supported by > clang v20, but it is not available for GCC, AFAIU. > > RFT, testing would need clang=20+ with COMNFIG_UBSAN and > CONFIG_UBSAN_BOUNDS enabled. Tested cpufreq (ACPM DVFS) with: CONFIG_CLANG_VERSION=220100 CONFIG_UBSAN=y CONFIG_UBSAN_BOUNDS=y Tested-by: Tudor Ambarus Reviewed-by: Tudor Ambarus > --- > drivers/firmware/samsung/exynos-acpm-dvfs.c | 4 ++-- > drivers/firmware/samsung/exynos-acpm.h | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/samsung/exynos-acpm-dvfs.c b/drivers/firmware/samsung/exynos-acpm-dvfs.c > index 55ec6ad9d87e..a4864973f65d 100644 > --- a/drivers/firmware/samsung/exynos-acpm-dvfs.c > +++ b/drivers/firmware/samsung/exynos-acpm-dvfs.c > @@ -24,12 +24,12 @@ static void acpm_dvfs_set_xfer(struct acpm_xfer *xfer, u32 *cmd, size_t cmdlen, > unsigned int acpm_chan_id, bool response) > { > xfer->acpm_chan_id = acpm_chan_id; > - xfer->txd = cmd; > xfer->txcnt = cmdlen; > + xfer->txd = cmd; > > if (response) { > - xfer->rxd = cmd; > xfer->rxcnt = cmdlen; > + xfer->rxd = cmd; > } > } > > diff --git a/drivers/firmware/samsung/exynos-acpm.h b/drivers/firmware/samsung/exynos-acpm.h > index 422fbcac7284..8392fcb91f45 100644 > --- a/drivers/firmware/samsung/exynos-acpm.h > +++ b/drivers/firmware/samsung/exynos-acpm.h > @@ -8,8 +8,8 @@ > #define __EXYNOS_ACPM_H__ > > struct acpm_xfer { > - const u32 *txd; > - u32 *rxd; > + const u32 *txd __counted_by_ptr(txcnt); > + u32 *rxd __counted_by_ptr(rxcnt); > size_t txcnt; > size_t rxcnt; > unsigned int acpm_chan_id; >