diff mbox series

[RFC,2/7] lmb: Simplify lmb_addrs_overlap()

Message ID 20241208105223.2821049-3-ilias.apalodimas@linaro.org
State New
Headers show
Series Cleanup the LMB subsystem | expand

Commit Message

Ilias Apalodimas Dec. 8, 2024, 10:52 a.m. UTC
There's no point subtracting -1 from the calculated addresses and then
check for a <= b. Just remove the -1 and check for a < b.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
 lib/lmb.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Heinrich Schuchardt Dec. 8, 2024, 11:25 a.m. UTC | #1
Am 8. Dezember 2024 11:52:05 MEZ schrieb Ilias Apalodimas <ilias.apalodimas@linaro.org>:
>There's no point subtracting -1 from the calculated addresses and then
>check for a <= b. Just remove the -1 and check for a < b.

I once thought that, too. But it makes a difference for end= U(L)LONG_MAX.

Best regards

Heinrich

>
>Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
>---
> lib/lmb.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
>diff --git a/lib/lmb.c b/lib/lmb.c
>index a7ecbb58831f..c7bf5120696f 100644
>--- a/lib/lmb.c
>+++ b/lib/lmb.c
>@@ -36,10 +36,10 @@ DECLARE_GLOBAL_DATA_PTR;
> static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
> 			      phys_addr_t base2, phys_size_t size2)
> {
>-	const phys_addr_t base1_end = base1 + size1 - 1;
>-	const phys_addr_t base2_end = base2 + size2 - 1;
>+	const phys_addr_t base1_end = base1 + size1;
>+	const phys_addr_t base2_end = base2 + size2;
> 
>-	return ((base1 <= base2_end) && (base2 <= base1_end));
>+	return ((base1 < base2_end) && (base2 < base1_end));
> }
> 
> static long lmb_addrs_adjacent(phys_addr_t base1, phys_size_t size1,
Ilias Apalodimas Dec. 8, 2024, 12:23 p.m. UTC | #2
Hi Heinrich

On Sun, 8 Dec 2024 at 13:31, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> Am 8. Dezember 2024 11:52:05 MEZ schrieb Ilias Apalodimas <ilias.apalodimas@linaro.org>:
> >There's no point subtracting -1 from the calculated addresses and then
> >check for a <= b. Just remove the -1 and check for a < b.
>
> I once thought that, too. But it makes a difference for end= U(L)LONG_MAX.

If those addresses overflow then we have to add more checks -- e.g
if (base2_end < base2)
{
     Do something wrong
}

In which case, I prefer modifying the function and add those checks

Thoughts?
/Ilias

>
> Best regards
>
> Heinrich
>
> >
> >Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> >---
> > lib/lmb.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> >diff --git a/lib/lmb.c b/lib/lmb.c
> >index a7ecbb58831f..c7bf5120696f 100644
> >--- a/lib/lmb.c
> >+++ b/lib/lmb.c
> >@@ -36,10 +36,10 @@ DECLARE_GLOBAL_DATA_PTR;
> > static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
> >                             phys_addr_t base2, phys_size_t size2)
> > {
> >-      const phys_addr_t base1_end = base1 + size1 - 1;
> >-      const phys_addr_t base2_end = base2 + size2 - 1;
> >+      const phys_addr_t base1_end = base1 + size1;
> >+      const phys_addr_t base2_end = base2 + size2;
> >
> >-      return ((base1 <= base2_end) && (base2 <= base1_end));
> >+      return ((base1 < base2_end) && (base2 < base1_end));
> > }
> >
> > static long lmb_addrs_adjacent(phys_addr_t base1, phys_size_t size1,
>
Ilias Apalodimas Dec. 8, 2024, 12:34 p.m. UTC | #3
On Sun, 8 Dec 2024 at 14:23, Ilias Apalodimas
<ilias.apalodimas@linaro.org> wrote:
>
> Hi Heinrich
>
> On Sun, 8 Dec 2024 at 13:31, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> > Am 8. Dezember 2024 11:52:05 MEZ schrieb Ilias Apalodimas <ilias.apalodimas@linaro.org>:
> > >There's no point subtracting -1 from the calculated addresses and then
> > >check for a <= b. Just remove the -1 and check for a < b.
> >
> > I once thought that, too. But it makes a difference for end= U(L)LONG_MAX.
>
> If those addresses overflow then we have to add more checks -- e.g
> if (base2_end < base2)
> {
>      Do something wrong
> }
>
> In which case, I prefer modifying the function and add those checks
>
> Thoughts?
> /Ilias

I'm replying to myself here, but the check above isn't needed it's
already implied by the return checks.
I'll drop this in v2

Cheers
/Ilias
>
> >
> > Best regards
> >
> > Heinrich
> >
> > >
> > >Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > >---
> > > lib/lmb.c | 6 +++---
> > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > >diff --git a/lib/lmb.c b/lib/lmb.c
> > >index a7ecbb58831f..c7bf5120696f 100644
> > >--- a/lib/lmb.c
> > >+++ b/lib/lmb.c
> > >@@ -36,10 +36,10 @@ DECLARE_GLOBAL_DATA_PTR;
> > > static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
> > >                             phys_addr_t base2, phys_size_t size2)
> > > {
> > >-      const phys_addr_t base1_end = base1 + size1 - 1;
> > >-      const phys_addr_t base2_end = base2 + size2 - 1;
> > >+      const phys_addr_t base1_end = base1 + size1;
> > >+      const phys_addr_t base2_end = base2 + size2;
> > >
> > >-      return ((base1 <= base2_end) && (base2 <= base1_end));
> > >+      return ((base1 < base2_end) && (base2 < base1_end));
> > > }
> > >
> > > static long lmb_addrs_adjacent(phys_addr_t base1, phys_size_t size1,
> >
diff mbox series

Patch

diff --git a/lib/lmb.c b/lib/lmb.c
index a7ecbb58831f..c7bf5120696f 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -36,10 +36,10 @@  DECLARE_GLOBAL_DATA_PTR;
 static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
 			      phys_addr_t base2, phys_size_t size2)
 {
-	const phys_addr_t base1_end = base1 + size1 - 1;
-	const phys_addr_t base2_end = base2 + size2 - 1;
+	const phys_addr_t base1_end = base1 + size1;
+	const phys_addr_t base2_end = base2 + size2;
 
-	return ((base1 <= base2_end) && (base2 <= base1_end));
+	return ((base1 < base2_end) && (base2 < base1_end));
 }
 
 static long lmb_addrs_adjacent(phys_addr_t base1, phys_size_t size1,