Re: [PATCH v3 1/4] soc: qcom: smem: add IN_PARTITION_RANGE helper
From: Albert Esteve
Date: Thu Oct 22 2026 - 03:35:20 EST
On Wed, Oct 21, 2026 at 2:23 PM Konrad Dybcio
<konrad.dybcio@xxxxxxxxxxxxxxxx> wrote:
>
> 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))
>
I see. I will update it in the next version. Thanks.
> Konrad
>