> The call to set_page_count(page, 1) in page_alloc.c appears to happen
> only for the first page, for order 1 and higher allocations.
> This leaves the count for the rest of the pages in that block
> uninitialised.
Actually it should be zero.
This is deliberate because high order pages should not be referenced by
their partial pages. It might make sense to add a PG_large flag and
then in the immediately following struct page add a pointer to the next
page, so you can identify these pages by inspection. Doing something
similar to the PG_skip flag.
Beyond that I get nervous, that people will treat it as endorsement of
doing a high order continuous allocation and then fragmenting the page.
Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/