diff options
author | Michael Roth <[email protected]> | 2023-11-03 10:13:54 -0500 |
---|---|---|
committer | Ard Biesheuvel <[email protected]> | 2023-11-28 12:49:21 +0100 |
commit | 01b1e3ca0e5ce47bbae8217d47376ad01b331b07 (patch) | |
tree | 58f8b4dce4a23d239744ade27a9a65d2abb0740d | |
parent | 2cc14f52aeb78ce3f29677c2de1f06c0e91471ab (diff) |
efi/unaccepted: Fix off-by-one when checking for overlapping ranges
When a task needs to accept memory it will scan the accepting_list
to see if any ranges already being processed by other tasks overlap
with its range. Due to an off-by-one in the range comparisons, a task
might falsely determine that an overlapping range is being accepted,
leading to an unnecessary delay before it begins processing the range.
Fix the off-by-one in the range comparison to prevent this and slightly
improve performance.
Fixes: 50e782a86c98 ("efi/unaccepted: Fix soft lockups caused by parallel memory acceptance")
Link: https://lore.kernel.org/linux-mm/[email protected]/T/#me2eceb9906fcae5fe958b3fe88e41f920f8335b6
Reviewed-by: Kirill A. Shutemov <[email protected]>
Signed-off-by: Michael Roth <[email protected]>
Acked-by: Vlastimil Babka <[email protected]>
Signed-off-by: Ard Biesheuvel <[email protected]>
-rw-r--r-- | drivers/firmware/efi/unaccepted_memory.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/firmware/efi/unaccepted_memory.c b/drivers/firmware/efi/unaccepted_memory.c index 3f2f7bf6e335..5b439d04079c 100644 --- a/drivers/firmware/efi/unaccepted_memory.c +++ b/drivers/firmware/efi/unaccepted_memory.c @@ -101,7 +101,7 @@ retry: * overlap on physical address level. */ list_for_each_entry(entry, &accepting_list, list) { - if (entry->end < range.start) + if (entry->end <= range.start) continue; if (entry->start >= range.end) continue; |