Messages in this thread | | | Date | Thu, 1 Mar 2012 09:03:16 -0600 (CST) | From | Christoph Lameter <> | Subject | Re: [PATCH -next] slub: set PG_slab on all of slab pages |
| |
On Thu, 1 Mar 2012, Namhyung Kim wrote:
> > You cannot free a tail page of a compound higher order page independently. > > You must free the whole compound. > > > > I meant freeing a *slab object* resides in a compound page using buddy > system API (e.g. free_pages). I know it's definitely a programming > error. However there's no safety net to protect and/or warn such a > misbehavior AFAICS - except for head page which has PG_slab set - when > it happened by any chance.
?? One generally passed a struct page pointer to the page allocator. Slab allocator takes pointers to object. The calls that take a pointer to an object must have a page aligned value.
> Without it, it might be possible to free part of tail pages silently, > and cause unexpected not-so-funny results some time later. It should be > hard to find out.
Ok then fix the page allocator to BUG() on tail pages. That is an issue with the page allocator not the slab allocator.
Adding PG_tail to the flags checked on free should do the trick (at least for 64 bit).
| |