Wrong page freed on preallocate_pmds() failure exit
authorAl Viro <viro@ZenIV.linux.org.uk>
Wed, 20 Nov 2013 22:16:36 +0000 (22:16 +0000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 20 Nov 2013 22:22:14 +0000 (14:22 -0800)
commit2a46eed54a28c1e3de701ca4237ce4f8bebf14c6
treed1bb3671fed7746110175a480b72a543bfd3d271
parent82023bb7f75b0052f40d3e74169d191c3e4e6286
Wrong page freed on preallocate_pmds() failure exit

Note that pmds[i] is simply uninitialized at that point...

Granted, it's very hard to hit (you need split page locks *and*
kmalloc(sizeof(spinlock_t), GFP_KERNEL) failing), but the code is
obviously bogus.

Introduced by commit 09ef4939850a ("x86: add missed
pgtable_pmd_page_ctor/dtor calls for preallocated pmds")

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/x86/mm/pgtable.c