]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
mm: fix faulty initialization in vmalloc_init()
authorKyongHo <pullip.cho@samsung.com>
Tue, 29 May 2012 22:06:49 +0000 (15:06 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 10 Jun 2012 13:41:46 +0000 (14:41 +0100)
commit39083c6db7e18732e872fed0c2f2427de12a622a
treec53b5f85004fc5b2e508f604522359d49efc7f22
parent15db5b6a476408a1a4b165e1786874be5aa8e242
mm: fix faulty initialization in vmalloc_init()

commit dbda591d920b4c7692725b13e3f68ecb251e9080 upstream.

The transfer of ->flags causes some of the static mapping virtual
addresses to be prematurely freed (before the mapping is removed) because
VM_LAZY_FREE gets "set" if tmp->flags has VM_IOREMAP set.  This might
cause subsequent vmalloc/ioremap calls to fail because it might allocate
one of the freed virtual address ranges that aren't unmapped.

va->flags has different types of flags from tmp->flags.  If a region with
VM_IOREMAP set is registered with vm_area_add_early(), it will be removed
by __purge_vmap_area_lazy().

Fix vmalloc_init() to correctly initialize vmap_area for the given
vm_struct.

Also initialise va->vm.  If it is not set, find_vm_area() for the early
vm regions will always fail.

Signed-off-by: KyongHo Cho <pullip.cho@samsung.com>
Cc: "Olav Haugan" <ohaugan@codeaurora.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
mm/vmalloc.c