Re: [PATCH v3 1/4] soc: qcom: smem: add IN_PARTITION_RANGE helper
From: Konrad Dybcio
Date: Wed Oct 21 2026 - 08:29:59 EST
On 9/24/26 3:10 PM, Albert Esteve wrote:
> From: Sarannya S <quic_sarannya@xxxxxxxxxxxxxxxx>
>
> Add IN_PARTITION_RANGE() to test that a pointer lies in [start, end]
> and that pointer + size does not wrap.
>
> Signed-off-by: Sarannya S <quic_sarannya@xxxxxxxxxxxxxxxx>
> Signed-off-by: Pranav Mahesh Phansalkar <quic_pphansal@xxxxxxxxxxxxxxxx>
> Signed-off-by: Sudeepgoud Patil <quic_sudeepgo@xxxxxxxxxxxxxxxx>
> Signed-off-by: Albert Esteve <aesteve@xxxxxxxxxx>
> ---
> drivers/soc/qcom/smem.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c
> index b5e7bd8c1512..6783a3c533f0 100644
> --- a/drivers/soc/qcom/smem.c
> +++ b/drivers/soc/qcom/smem.c
> @@ -2,6 +2,7 @@
> /*
> * Copyright (c) 2015, Sony Mobile Communications AB.
> * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> */
>
> #include <linux/debugfs.h>
> @@ -88,6 +89,17 @@
> /* Processor/host identifier for the global partition */
> #define SMEM_GLOBAL_HOST 0xfffe
>
> +/* Entry range check
> + * ptr >= start : Checks if ptr is greater than the start of access region
> + * ptr + size >= ptr: Check for integer overflow (On 32bit system where ptr
> + * and size are 32bits, ptr + size can wrap around to be a small integer)
> + * ptr + size <= end: Checks if ptr+size is less than the end of access region
> + */
> +#define IN_PARTITION_RANGE(ptr, size, start, end) \
> + (((void *)(ptr) >= (void *)(start)) && \
> + (((void *)(ptr) + (size)) >= (void *)(ptr)) && \
> + (((void *)(ptr) + (size)) <= (void *)(end)))
LLM is unhappy about the 32-bit base and suggests this instead:
#define IN_PARTITION_RANGE(ptr, size, start, end) \
((void *)(ptr) >= (void *)(start) && \
(void *)(ptr) <= (void *)(end) && \
(size) <= (uintptr_t)(end) - (uintptr_t)(ptr))
Konrad