summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZlatko Calusic <zlatko.calusic@iskon.hr>2012-12-28 03:16:38 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2012-12-28 08:42:39 -0800
commitecccd1248d6e6986130ffcc3b0d003cb46a485c0 (patch)
treebc9fdf3caf32e846776f13985f837c89455cbb39
parent101e5c7470eb7f77ae87f966b9155f0dbb5b4698 (diff)
downloadlinux-ecccd1248d6e6986130ffcc3b0d003cb46a485c0.tar.bz2
mm: fix null pointer dereference in wait_iff_congested()
An unintended consequence of commit 4ae0a48b5efc ("mm: modify pgdat_balanced() so that it also handles order-0") is that wait_iff_congested() can now be called with NULL 'struct zone *' producing kernel oops like this: BUG: unable to handle kernel NULL pointer dereference IP: [<ffffffff811542d9>] wait_iff_congested+0x59/0x140 This trivial patch fixes it. Reported-by: Zhouping Liu <zliu@redhat.com> Reported-and-tested-by: Sedat Dilek <sedat.dilek@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Zlatko Calusic <zlatko.calusic@iskon.hr> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/vmscan.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 23291b9ae871..16b42af393ac 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2775,7 +2775,7 @@ loop_again:
if (total_scanned && (sc.priority < DEF_PRIORITY - 2)) {
if (has_under_min_watermark_zone)
count_vm_event(KSWAPD_SKIP_CONGESTION_WAIT);
- else
+ else if (unbalanced_zone)
wait_iff_congested(unbalanced_zone, BLK_RW_ASYNC, HZ/10);
}