diff options
| author | David Rientjes <[email protected]> | 2016-07-14 19:06:50 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2016-07-15 05:54:27 +0000 |
| commit | a46cbf3bc53b6a93fb84a5ffb288c354fa807954 (patch) | |
| tree | 9f9c1029e2291f6b366c881175f1a2894d246666 /scripts/gdb/vmlinux-gdb.py | |
| parent | Merge branches 'perf-urgent-for-linus' and 'timers-urgent-for-linus' of git:/... (diff) | |
| download | kernel-a46cbf3bc53b6a93fb84a5ffb288c354fa807954.tar.gz kernel-a46cbf3bc53b6a93fb84a5ffb288c354fa807954.zip | |
mm, compaction: prevent VM_BUG_ON when terminating freeing scanner
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.
[[email protected]: don't rescan pages in a pageblock]
Link: http://lkml.kernel.org/r/[email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: David Rientjes <[email protected]>
Reported-by: Minchan Kim <[email protected]>
Tested-by: Minchan Kim <[email protected]>
Cc: Joonsoo Kim <[email protected]>
Cc: Hugh Dickins <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts/gdb/vmlinux-gdb.py')
0 files changed, 0 insertions, 0 deletions
