diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/hugetlb.c | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 3255ca420fc8..67f29516662a 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -391,12 +391,7 @@ static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma, | |||
391 | 391 | ||
392 | if (!new_page) { | 392 | if (!new_page) { |
393 | page_cache_release(old_page); | 393 | page_cache_release(old_page); |
394 | 394 | return VM_FAULT_OOM; | |
395 | /* Logically this is OOM, not a SIGBUS, but an OOM | ||
396 | * could cause the kernel to go killing other | ||
397 | * processes which won't help the hugepage situation | ||
398 | * at all (?) */ | ||
399 | return VM_FAULT_SIGBUS; | ||
400 | } | 395 | } |
401 | 396 | ||
402 | spin_unlock(&mm->page_table_lock); | 397 | spin_unlock(&mm->page_table_lock); |
@@ -444,15 +439,7 @@ retry: | |||
444 | page = alloc_huge_page(vma, address); | 439 | page = alloc_huge_page(vma, address); |
445 | if (!page) { | 440 | if (!page) { |
446 | hugetlb_put_quota(mapping); | 441 | hugetlb_put_quota(mapping); |
447 | /* | 442 | ret = VM_FAULT_OOM; |
448 | * No huge pages available. So this is an OOM | ||
449 | * condition but we do not want to trigger the OOM | ||
450 | * killer, so we return VM_FAULT_SIGBUS. | ||
451 | * | ||
452 | * A program using hugepages may fault with Bus Error | ||
453 | * because no huge pages are available in the cpuset, per | ||
454 | * memory policy or because all are in use! | ||
455 | */ | ||
456 | goto out; | 443 | goto out; |
457 | } | 444 | } |
458 | 445 | ||