--- /dev/null
+From dbda591d920b4c7692725b13e3f68ecb251e9080 Mon Sep 17 00:00:00 2001
+From: KyongHo <pullip.cho@samsung.com>
+Date: Tue, 29 May 2012 15:06:49 -0700
+Subject: mm: fix faulty initialization in vmalloc_init()
+
+From: KyongHo <pullip.cho@samsung.com>
+
+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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/vmalloc.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
+@@ -1174,9 +1174,10 @@ void __init vmalloc_init(void)
+ /* Import existing vmlist entries. */
+ for (tmp = vmlist; tmp; tmp = tmp->next) {
+ va = kzalloc(sizeof(struct vmap_area), GFP_NOWAIT);
+- va->flags = tmp->flags | VM_VM_AREA;
++ va->flags = VM_VM_AREA;
+ va->va_start = (unsigned long)tmp->addr;
+ va->va_end = va->va_start + tmp->size;
++ va->vm = tmp;
+ __insert_vmap_area(va);
+ }
+
--- /dev/null
+From db1aecafef58b5dda39c4228debe2c845e4a27ab Mon Sep 17 00:00:00 2001
+From: Minchan Kim <minchan@kernel.org>
+Date: Tue, 10 Jan 2012 15:08:39 -0800
+Subject: mm/vmalloc.c: change void* into explict vm_struct*
+
+From: Minchan Kim <minchan@kernel.org>
+
+commit db1aecafef58b5dda39c4228debe2c845e4a27ab upstream.
+
+vmap_area->private is void* but we don't use the field for various purpose
+but use only for vm_struct. So change it to a vm_struct* with naming to
+improve for readability and type checking.
+
+Signed-off-by: Minchan Kim <minchan@kernel.org>
+Acked-by: David Rientjes <rientjes@google.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/vmalloc.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
+@@ -256,7 +256,7 @@ struct vmap_area {
+ struct rb_node rb_node; /* address sorted rbtree */
+ struct list_head list; /* address sorted list */
+ struct list_head purge_list; /* "lazy purge" list */
+- void *private;
++ struct vm_struct *vm;
+ struct rcu_head rcu_head;
+ };
+
+@@ -1274,7 +1274,7 @@ static void setup_vmalloc_vm(struct vm_s
+ vm->addr = (void *)va->va_start;
+ vm->size = va->va_end - va->va_start;
+ vm->caller = caller;
+- va->private = vm;
++ va->vm = vm;
+ va->flags |= VM_VM_AREA;
+ }
+
+@@ -1397,7 +1397,7 @@ static struct vm_struct *find_vm_area(co
+
+ va = find_vmap_area((unsigned long)addr);
+ if (va && va->flags & VM_VM_AREA)
+- return va->private;
++ return va->vm;
+
+ return NULL;
+ }
+@@ -1416,7 +1416,7 @@ struct vm_struct *remove_vm_area(const v
+
+ va = find_vmap_area((unsigned long)addr);
+ if (va && va->flags & VM_VM_AREA) {
+- struct vm_struct *vm = va->private;
++ struct vm_struct *vm = va->vm;
+
+ if (!(vm->flags & VM_UNLIST)) {
+ struct vm_struct *tmp, **p;
x86-mce-amd-make-apic-lvt-thresholding-interrupt-optional.patch
fuse-fix-stat-call-on-32-bit-platforms.patch
e1000-save-skb-counts-in-tx-to-avoid-cache-misses.patch
+mm-vmalloc.c-change-void-into-explict-vm_struct.patch
+mm-fix-faulty-initialization-in-vmalloc_init.patch