]> git.baikalelectronics.ru Git - kernel.git/commit
mm: bootmem: fix checking the bitmap when finally freeing bootmem
authorGavin Shan <shangw@linux.vnet.ibm.com>
Tue, 29 May 2012 22:06:32 +0000 (15:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 29 May 2012 23:22:21 +0000 (16:22 -0700)
commit221416ffb7f9386e33745039b9f80dc19cf7daab
tree32d748a8b981e98b64547ab8a7064453b7686334
parent1c778ba435be7e34c71672fca6c60c1ccf7bf1c5
mm: bootmem: fix checking the bitmap when finally freeing bootmem

When bootmem releases an unaligned chunk of memory at the beginning of a
node to the page allocator, it iterates from that unaligned PFN but
checks an aligned word of the page bitmap.  The checked bits do not
correspond to the PFNs and, as a result, reserved pages can be freed.

Properly shift the bitmap word so that the lowest bit corresponds to the
starting PFN before entering the freeing loop.

This bug has been around since commit f7bae92d0af0 ("bootmem: clean up
free_all_bootmem_core") (2.6.27) without known reports.

Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Tejun Heo <tj@kernel.org>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/bootmem.c