diff options
author | Zlatko Calusic <zlatko.calusic@iskon.hr> | 2012-12-28 03:16:38 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-28 08:42:39 -0800 |
commit | ecccd1248d6e6986130ffcc3b0d003cb46a485c0 (patch) | |
tree | bc9fdf3caf32e846776f13985f837c89455cbb39 /mm | |
parent | 101e5c7470eb7f77ae87f966b9155f0dbb5b4698 (diff) | |
download | linux-ecccd1248d6e6986130ffcc3b0d003cb46a485c0.tar.gz linux-ecccd1248d6e6986130ffcc3b0d003cb46a485c0.tar.bz2 linux-ecccd1248d6e6986130ffcc3b0d003cb46a485c0.zip |
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>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 2 |
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); } |