hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry
authorNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Mon, 23 Jun 2014 20:22:03 +0000 (13:22 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 Jul 2014 12:33:54 +0000 (13:33 +0100)
commitde5f02d08d32aaf559f57def64176dae52a2e00a
treee25fb312671abf17bf9373e8812722389dd91b35
parentbb99d6796995968ca6a42b17fbfb48d073bb234c
hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry

commit 4a705fef986231a3e7a6b1a6d3c37025f021f49f upstream.

There's a race between fork() and hugepage migration, as a result we try
to "dereference" a swap entry as a normal pte, causing kernel panic.
The cause of the problem is that copy_hugetlb_page_range() can't handle
"swap entry" family (migration entry and hwpoisoned entry) so let's fix
it.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Christoph Lameter <cl@linux.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
mm/hugetlb.c