[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.0905101500460.18804@chino.kir.corp.google.com>
Date: Sun, 10 May 2009 15:07:14 -0700 (PDT)
From: David Rientjes <rientjes@...gle.com>
To: Andrew Morton <akpm@...ux-foundation.org>
cc: Greg Kroah-Hartman <gregkh@...e.de>, Nick Piggin <npiggin@...e.de>,
Mel Gorman <mel@....ul.ie>,
Peter Ziljstra <a.p.ziljstra@...llo.nl>,
Christoph Lameter <cl@...ux-foundation.org>,
Dave Hansen <dave@...ux.vnet.ibm.com>,
San Mehat <san@...roid.com>,
Arve Hjønnevåg <arve@...roid.com>,
linux-kernel@...r.kernel.org
Subject: [patch 04/11 -mmotm] oom: fix possible android low memory killer
NULL pointer
get_mm_rss() atomically dereferences the actual without checking for a
NULL pointer, which is possible since task_lock() is not held.
Cc: San Mehat <san@...roid.com>
Signed-off-by: David Rientjes <rientjes@...gle.com>
---
drivers/staging/android/lowmemorykiller.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
--- a/drivers/staging/android/lowmemorykiller.c
+++ b/drivers/staging/android/lowmemorykiller.c
@@ -92,12 +92,18 @@ static int lowmem_shrink(int nr_to_scan, gfp_t gfp_mask)
for_each_process(p) {
int oom_adj;
- if (!p->mm)
+ task_lock(p);
+ if (!p->mm) {
+ task_unlock(p);
continue;
+ }
oom_adj = p->oomkilladj;
- if (oom_adj < min_adj)
+ if (oom_adj < min_adj) {
+ task_unlock(p);
continue;
+ }
tasksize = get_mm_rss(p->mm);
+ task_unlock(p);
if (tasksize <= 0)
continue;
if (selected) {
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists