diff options
author | Herbert Xu <herbert@lithui.me.apana.org.au> | 2017-12-22 04:00:50 -0500 |
---|---|---|
committer | Herbert Xu <herbert@lithui.me.apana.org.au> | 2017-12-22 04:00:50 -0500 |
commit | 45fa9a324d0f5be9140ba2e0db9b8fb8a0b9b7e8 (patch) | |
tree | a5e7c8428030ec0462b58133d6548ddff3802018 /mm/page_alloc.c | |
parent | fc8517bf627c9b834f80274a1bc9ecd39b27231b (diff) | |
parent | 2973633e9f09311e849f975d969737af81a521ff (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Merge the crypto tree to pick up inside-secure fixes.
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d4096f4a5c1f..73f5d4556b3d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2507,10 +2507,6 @@ void drain_all_pages(struct zone *zone) | |||
2507 | if (WARN_ON_ONCE(!mm_percpu_wq)) | 2507 | if (WARN_ON_ONCE(!mm_percpu_wq)) |
2508 | return; | 2508 | return; |
2509 | 2509 | ||
2510 | /* Workqueues cannot recurse */ | ||
2511 | if (current->flags & PF_WQ_WORKER) | ||
2512 | return; | ||
2513 | |||
2514 | /* | 2510 | /* |
2515 | * Do not drain if one is already in progress unless it's specific to | 2511 | * Do not drain if one is already in progress unless it's specific to |
2516 | * a zone. Such callers are primarily CMA and memory hotplug and need | 2512 | * a zone. Such callers are primarily CMA and memory hotplug and need |
@@ -7656,11 +7652,18 @@ int alloc_contig_range(unsigned long start, unsigned long end, | |||
7656 | 7652 | ||
7657 | /* | 7653 | /* |
7658 | * In case of -EBUSY, we'd like to know which page causes problem. | 7654 | * In case of -EBUSY, we'd like to know which page causes problem. |
7659 | * So, just fall through. We will check it in test_pages_isolated(). | 7655 | * So, just fall through. test_pages_isolated() has a tracepoint |
7656 | * which will report the busy page. | ||
7657 | * | ||
7658 | * It is possible that busy pages could become available before | ||
7659 | * the call to test_pages_isolated, and the range will actually be | ||
7660 | * allocated. So, if we fall through be sure to clear ret so that | ||
7661 | * -EBUSY is not accidentally used or returned to caller. | ||
7660 | */ | 7662 | */ |
7661 | ret = __alloc_contig_migrate_range(&cc, start, end); | 7663 | ret = __alloc_contig_migrate_range(&cc, start, end); |
7662 | if (ret && ret != -EBUSY) | 7664 | if (ret && ret != -EBUSY) |
7663 | goto done; | 7665 | goto done; |
7666 | ret =0; | ||
7664 | 7667 | ||
7665 | /* | 7668 | /* |
7666 | * Pages from [start, end) are within a MAX_ORDER_NR_PAGES | 7669 | * Pages from [start, end) are within a MAX_ORDER_NR_PAGES |