Thread (9 messages) 9 messages, 5 authors, 2016-07-06

Re: [patch for-4.7] mm, compaction: prevent VM_BUG_ON when terminating freeing scanner

From: Greg KH <hidden>
Date: 2016-06-29 22:43:18
Also in: lkml, stable

On Wed, Jun 29, 2016 at 02:47:20PM -0700, David Rientjes wrote:
It's possible to isolate some freepages in a pageblock and then fail 
split_free_page() due to the low watermark check.  In this case, we hit 
VM_BUG_ON() because the freeing scanner terminated early without a 
contended lock or enough freepages.

This should never have been a VM_BUG_ON() since it's not a fatal 
condition.  It should have been a VM_WARN_ON() at best, or even handled 
gracefully.

Regardless, we need to terminate anytime the full pageblock scan was not 
done.  The logic belongs in isolate_freepages_block(), so handle its state
gracefully by terminating the pageblock loop and making a note to restart 
at the same pageblock next time since it was not possible to complete the 
scan this time.

Reported-by: Minchan Kim <minchan@kernel.org>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 Note: I really dislike the low watermark check in split_free_page() and
 consider it poor software engineering.  The function should split a free
 page, nothing more.  Terminating memory compaction because of a low
 watermark check when we're simply trying to migrate memory seems like an
 arbitrary heuristic.  There was an objection to removing it in the first
 proposed patch, but I think we should really consider removing that
 check so this is simpler.

 mm/compaction.c | 37 +++++++++++++++----------------------
 1 file changed, 15 insertions(+), 22 deletions(-)
<formletter>

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read Documentation/stable_kernel_rules.txt
for how to do this properly.

</formletter>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help