diff options
| author | 2019-01-15 15:37:46 +0100 | |
|---|---|---|
| committer | 2019-01-15 15:37:46 +0100 | |
| commit | cb7edfd4cd47ed50ea618b660ee283a2d99edff2 (patch) | |
| tree | fb2749afac5055798dcf8f0dca77c88e749307da /mm/page_alloc.c | |
| parent | USB: core: urb: Use struct_size() in kmalloc() (diff) | |
| parent | Linux 5.0-rc2 (diff) | |
| download | wireguard-linux-cb7edfd4cd47ed50ea618b660ee283a2d99edff2.tar.xz wireguard-linux-cb7edfd4cd47ed50ea618b660ee283a2d99edff2.zip | |
Merge 5.0-rc2 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index cde5dac6229a..d295c9bc01a8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2214,7 +2214,7 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page, */ boost_watermark(zone); if (alloc_flags & ALLOC_KSWAPD) - wakeup_kswapd(zone, 0, 0, zone_idx(zone)); + set_bit(ZONE_BOOSTED_WATERMARK, &zone->flags); /* We are not allowed to try stealing from the whole block */ if (!whole_block) @@ -3102,6 +3102,12 @@ struct page *rmqueue(struct zone *preferred_zone, local_irq_restore(flags); out: + /* Separate test+clear to avoid unnecessary atomics */ + if (test_bit(ZONE_BOOSTED_WATERMARK, &zone->flags)) { + clear_bit(ZONE_BOOSTED_WATERMARK, &zone->flags); + wakeup_kswapd(zone, 0, 0, zone_idx(zone)); + } + VM_BUG_ON_PAGE(page && bad_range(zone, page), page); return page; |
