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). -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>