On 07/17/2013 10:30 PM, Heesub Shin wrote: > zbud_alloc() incorrectly verifies the size of allocation limit. It > should deny the allocation request greater than (PAGE_SIZE - > ZHDR_SIZE_ALIGNED - CHUNK_SIZE), not (PAGE_SIZE - ZHDR_SIZE_ALIGNED) > which has no remaining spaces for its buddy. There is no point in > spending the entire zbud page storing only a single page, since we don't > have any benefits. > > Signed-off-by: Heesub Shin <heesub.shin@xxxxxxxxxxx> Looks good to me, although I'm thinking to make it more aggressive. eg. minus two or three times of CHUNK_SIZE. > --- > mm/zbud.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/zbud.c b/mm/zbud.c > index 9bb4710..ad1e781 100644 > --- a/mm/zbud.c > +++ b/mm/zbud.c > @@ -257,7 +257,7 @@ int zbud_alloc(struct zbud_pool *pool, int size, gfp_t gfp, > > if (size <= 0 || gfp & __GFP_HIGHMEM) > return -EINVAL; > - if (size > PAGE_SIZE - ZHDR_SIZE_ALIGNED) > + if (size > PAGE_SIZE - ZHDR_SIZE_ALIGNED - CHUNK_SIZE) > return -ENOSPC; > chunks = size_to_chunks(size); > spin_lock(&pool->lock); > -- Regards, -Bob -- 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/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>