On Thu, 18 Dec 2014 18:30:59 -0800 Toshi Kikuchi <tos...@chromium.org> wrote:
> Since chunk->end_addr is (chunk->start_addr + size - 1), > the end address to compare should be (start + size - 1). > > Signed-off-by: Toshi Kikuchi <tos...@chromium.org> > --- > lib/genalloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/genalloc.c b/lib/genalloc.c > index 2e65d20..42a95e9 100644 > --- a/lib/genalloc.c > +++ b/lib/genalloc.c > @@ -415,7 +415,7 @@ bool addr_in_gen_pool(struct gen_pool *pool, unsigned > long start, > size_t size) > { > bool found = false; > - unsigned long end = start + size; > + unsigned long end = start + size - 1; > struct gen_pool_chunk *chunk; > > rcu_read_lock(); urgh. gen_pool_chunk.end_addr should have been made exclusive, not inclusive. Or switch to start_addr/size. The code would be considerably nicer that way. And the struct gen_pool_chunk definition should be moved into genalloc.c. I'm not sure what drivers/acpi/apei/ghes.c is doing fiddling around with genalloc internals, but it should stop doing it. Sigh :( -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/