aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/android/lowmemorykiller.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
index d091c801a3d..f3219f40892 100644
--- a/drivers/staging/android/lowmemorykiller.c
+++ b/drivers/staging/android/lowmemorykiller.c
@@ -99,7 +99,7 @@ task_notify_func(struct notifier_block *self, unsigned long val, void *data)
static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
{
- struct task_struct *p;
+ struct task_struct *tsk;
#ifdef ENHANCED_LMK_ROUTINE
struct task_struct *selected[LOWMEM_DEATHPENDING_DEPTH] = {NULL,};
#else
@@ -180,17 +180,19 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
#endif
rcu_read_lock();
- for_each_process(p) {
- struct mm_struct *mm;
+ for_each_process(tsk) {
+ struct task_struct *p;
struct signal_struct *sig;
int oom_adj;
#ifdef ENHANCED_LMK_ROUTINE
int is_exist_oom_task = 0;
#endif
- task_lock(p);
- mm = p->mm;
+ p = find_lock_task_mm(tsk);
+ if (!p)
+ continue;
+
sig = p->signal;
- if (!mm || !sig) {
+ if (!sig) {
task_unlock(p);
continue;
}
@@ -199,7 +201,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
task_unlock(p);
continue;
}
- tasksize = get_mm_rss(mm);
+ tasksize = get_mm_rss(p->mm);
task_unlock(p);
if (tasksize <= 0)
continue;