* [PATCH] powerpc/kexec_file: Use inclusive range checks in add_usable_mem()
@ 2026-08-09 16:24 Thorsten Blum
2026-08-11 6:21 ` Sourabh Jain
0 siblings, 1 reply; 3+ messages in thread
From: Thorsten Blum @ 2026-08-09 16:24 UTC (permalink / raw)
To: Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin,
Christophe Leroy (CS GROUP), Sourabh Jain, Hari Bathini,
Aditya Gupta, Jinjie Ruan, Thiago Jung Bauermann
Cc: Thorsten Blum, linuxppc-dev, linux-kernel
add_usable_mem() adds usable memory ranges for the kdump kernel.
The ranges are inclusive, but the partial overlap check uses exclusive
comparisons. This skips ranges with base == loc_end or end == loc_base.
Use inclusive comparisons instead.
Fixes: 7c64e21a1c5a ("powerpc/kexec_file: Restrict memory usage of kdump kernel")
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
arch/powerpc/kexec/file_load_64.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c
index 8c72e12ea44e..f9e872693ca7 100644
--- a/arch/powerpc/kexec/file_load_64.c
+++ b/arch/powerpc/kexec/file_load_64.c
@@ -113,7 +113,7 @@ static int add_usable_mem(struct umem_info *um_info, u64 base, u64 end)
loc_end = um_info->ranges[i].end;
if (loc_base >= base && loc_end <= end)
add = true;
- else if (base < loc_end && end > loc_base) {
+ else if (base <= loc_end && end >= loc_base) {
if (loc_base < base)
loc_base = base;
if (loc_end > end)
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] powerpc/kexec_file: Use inclusive range checks in add_usable_mem()
2026-08-09 16:24 [PATCH] powerpc/kexec_file: Use inclusive range checks in add_usable_mem() Thorsten Blum
@ 2026-08-11 6:21 ` Sourabh Jain
2026-08-11 10:55 ` Thorsten Blum
0 siblings, 1 reply; 3+ messages in thread
From: Sourabh Jain @ 2026-08-11 6:21 UTC (permalink / raw)
To: Thorsten Blum, Madhavan Srinivasan, Michael Ellerman,
Nicholas Piggin, Christophe Leroy (CS GROUP), Hari Bathini,
Aditya Gupta, Jinjie Ruan, Thiago Jung Bauermann
Cc: linuxppc-dev, linux-kernel
On 09/08/26 21:54, Thorsten Blum wrote:
> add_usable_mem() adds usable memory ranges for the kdump kernel.
>
> The ranges are inclusive, but the partial overlap check uses exclusive
> comparisons. This skips ranges with base == loc_end or end == loc_base.
> Use inclusive comparisons instead.
>
> Fixes: 7c64e21a1c5a ("powerpc/kexec_file: Restrict memory usage of kdump kernel")
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
> arch/powerpc/kexec/file_load_64.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c
> index 8c72e12ea44e..f9e872693ca7 100644
> --- a/arch/powerpc/kexec/file_load_64.c
> +++ b/arch/powerpc/kexec/file_load_64.c
> @@ -113,7 +113,7 @@ static int add_usable_mem(struct umem_info *um_info, u64 base, u64 end)
> loc_end = um_info->ranges[i].end;
> if (loc_base >= base && loc_end <= end)
> add = true;
> - else if (base < loc_end && end > loc_base) {
> + else if (base <= loc_end && end >= loc_base) {
This is interesting. The updated condition basically handles exactly a
one-byte overlap on either side of the usable memory ranges. In practice,
it is very unlikely that we would have such usable memory and LMB ranges.
Thorsten, have you encountered any problem that led you to propose this fix?
- Sourabh Jain
> if (loc_base < base)
> loc_base = base;
> if (loc_end > end)
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] powerpc/kexec_file: Use inclusive range checks in add_usable_mem()
2026-08-11 6:21 ` Sourabh Jain
@ 2026-08-11 10:55 ` Thorsten Blum
0 siblings, 0 replies; 3+ messages in thread
From: Thorsten Blum @ 2026-08-11 10:55 UTC (permalink / raw)
To: Sourabh Jain
Cc: Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin,
Christophe Leroy (CS GROUP), Hari Bathini, Aditya Gupta,
Jinjie Ruan, Thiago Jung Bauermann, linuxppc-dev, linux-kernel
On Tue, Aug 11, 2026 at 11:51:46AM +0530, Sourabh Jain wrote:
> On 09/08/26 21:54, Thorsten Blum wrote:
> > add_usable_mem() adds usable memory ranges for the kdump kernel.
> >
> > The ranges are inclusive, but the partial overlap check uses exclusive
> > comparisons. This skips ranges with base == loc_end or end == loc_base.
> > Use inclusive comparisons instead.
> >
> > Fixes: 7c64e21a1c5a ("powerpc/kexec_file: Restrict memory usage of kdump kernel")
> > Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> > ---
> > arch/powerpc/kexec/file_load_64.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c
> > index 8c72e12ea44e..f9e872693ca7 100644
> > --- a/arch/powerpc/kexec/file_load_64.c
> > +++ b/arch/powerpc/kexec/file_load_64.c
> > @@ -113,7 +113,7 @@ static int add_usable_mem(struct umem_info *um_info, u64 base, u64 end)
> > loc_end = um_info->ranges[i].end;
> > if (loc_base >= base && loc_end <= end)
> > add = true;
> > - else if (base < loc_end && end > loc_base) {
> > + else if (base <= loc_end && end >= loc_base) {
>
> This is interesting. The updated condition basically handles exactly a
> one-byte overlap on either side of the usable memory ranges. In practice,
> it is very unlikely that we would have such usable memory and LMB ranges.
>
> Thorsten, have you encountered any problem that led you to propose this fix?
Found by inspection only and I agree that this is unlikely in practice,
which is why I didn't cc stable. Same for the other patch [1].
Thanks for the review.
[1] https://lore.kernel.org/r/20260810145827.157972-3-thorsten.blum@linux.dev/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-11 10:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-09 16:24 [PATCH] powerpc/kexec_file: Use inclusive range checks in add_usable_mem() Thorsten Blum
2026-08-11 6:21 ` Sourabh Jain
2026-08-11 10:55 ` Thorsten Blum
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox