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 <[email protected]>
---
  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)


Reply via email to