Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
resource: Include resource end in walk_*() interfaces
find_next_iomem_res() finds an iomem resource that covers part of a range described by "start, end". All callers expect that range to be inclusive, i.e., both start and end are included, but find_next_iomem_res() doesn't handle the end address correctly. If it finds an iomem resource that contains exactly the end address, it skips it, e.g., if "start, end" is [0x0-0x10000] and there happens to be an iomem resource [mem 0x10000-0x10000] (the single byte at 0x10000), we skip it: find_next_iomem_res(...) { start = 0x0; end = 0x10000; for (p = next_resource(...)) { # p->start = 0x10000; # p->end = 0x10000; # we *should* return this resource, but this condition is false: if ((p->end >= start) && (p->start < end)) break; Adjust find_next_iomem_res() so it allows a resource that includes the single byte at the end of the range. This is a corner case that we probably don't see in practice. Fixes: 58c1b5b ("[PATCH] memory hotadd fixes: find_next_system_ram catch range fix") Signed-off-by: Bjorn Helgaas <[email protected]> Signed-off-by: Borislav Petkov <[email protected]> CC: Andrew Morton <[email protected]> CC: Brijesh Singh <[email protected]> CC: Dan Williams <[email protected]> CC: H. Peter Anvin <[email protected]> CC: Lianbo Jiang <[email protected]> CC: Takashi Iwai <[email protected]> CC: Thomas Gleixner <[email protected]> CC: Tom Lendacky <[email protected]> CC: Vivek Goyal <[email protected]> CC: Yaowei Bai <[email protected]> CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: x86-ml <[email protected]> Link: http://lkml.kernel.org/r/153805812254.1157.16736368485811773752.stgit@bhelgaas-glaptop.roam.corp.google.com
- Loading branch information