| Message ID | 20260810145827.157972-3-thorsten.blum@linux.dev (mailing list archive) |
|---|---|
| State | Under Review |
| Headers | show |
| Series | powerpc/kexec_file: Use inclusive range checks for excluded memory | expand |
On 10/08/26 20:28, Thorsten Blum wrote: > arch_check_excluded_range() checks if a kexec segment overlaps an > excluded memory range. > > Both ranges use inclusive end addresses, but the overlap check uses > exclusive comparisons. This skips ranges with start == ->ranges[i].end > or end == ->ranges[i].start. Use inclusive comparisons instead. > > Fixes: 6e5250eaa665 ("powerpc/crash: use generic APIs to locate memory hole for kdump") > Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> > --- > Sashiko found this issue when reviewing another patch: > https://sashiko.dev/#/patchset/20260809162403.18142-2-thorsten.blum%40linux.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 40b74cc4ed3e..32e2b7412a9f 100644 > --- a/arch/powerpc/kexec/file_load_64.c > +++ b/arch/powerpc/kexec/file_load_64.c > @@ -58,7 +58,7 @@ int arch_check_excluded_range(struct kimage *image, unsigned long start, > > emem = image->arch.exclude_ranges; > for (i = 0; i < emem->nr_ranges; i++) > - if (start < emem->ranges[i].end && end > emem->ranges[i].start) > + if (start <= emem->ranges[i].end && end >= emem->ranges[i].start) Like [1] this also extends the condition to check for a 1-byte overlap. It is unlikely to occur in practice, but I don't see any harm in doing so. Hence the changes looks good to me. Feel free to add. Reviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com> [1] https://lore.kernel.org/all/ee531113-5a56-4e6e-bc16-95941aa5bbfd@linux.ibm.com/ > return 1; > > return 0;
diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c index 40b74cc4ed3e..32e2b7412a9f 100644 --- a/arch/powerpc/kexec/file_load_64.c +++ b/arch/powerpc/kexec/file_load_64.c @@ -58,7 +58,7 @@ int arch_check_excluded_range(struct kimage *image, unsigned long start, emem = image->arch.exclude_ranges; for (i = 0; i < emem->nr_ranges; i++) - if (start < emem->ranges[i].end && end > emem->ranges[i].start) + if (start <= emem->ranges[i].end && end >= emem->ranges[i].start) return 1; return 0;
arch_check_excluded_range() checks if a kexec segment overlaps an excluded memory range. Both ranges use inclusive end addresses, but the overlap check uses exclusive comparisons. This skips ranges with start == ->ranges[i].end or end == ->ranges[i].start. Use inclusive comparisons instead. Fixes: 6e5250eaa665 ("powerpc/crash: use generic APIs to locate memory hole for kdump") Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> --- Sashiko found this issue when reviewing another patch: https://sashiko.dev/#/patchset/20260809162403.18142-2-thorsten.blum%40linux.dev --- arch/powerpc/kexec/file_load_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)