Commit 9d8c5b5284e4a0167c5f7b1193692492358b8700
Committed by
Linus Torvalds
1 parent
e180cf806a
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
mm: zbud: fix condition check on allocation size
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@samsung.com> Acked-by: Seth Jennings <sjenning@linux.vnet.ibm.com> Cc: Bob Liu <bob.liu@oracle.com> Cc: Dongjun Shin <d.j.shin@samsung.com> Cc: Sunae Seo <sunae.seo@samsung.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff
mm/zbud.c
... | ... | @@ -257,7 +257,7 @@ |
257 | 257 | |
258 | 258 | if (size <= 0 || gfp & __GFP_HIGHMEM) |
259 | 259 | return -EINVAL; |
260 | - if (size > PAGE_SIZE - ZHDR_SIZE_ALIGNED) | |
260 | + if (size > PAGE_SIZE - ZHDR_SIZE_ALIGNED - CHUNK_SIZE) | |
261 | 261 | return -ENOSPC; |
262 | 262 | chunks = size_to_chunks(size); |
263 | 263 | spin_lock(&pool->lock); |