linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] staging: android/lowmemorykiller: Don't grab tasklist_lock
@ 2012-02-01  4:33 Anton Vorontsov
  2012-02-02 12:54 ` Oleg Nesterov
  0 siblings, 1 reply; 37+ messages in thread
From: Anton Vorontsov @ 2012-02-01  4:33 UTC (permalink / raw)
  To: Greg KH
  Cc: Arve Hjønnevåg, KOSAKI Motohiro, San Mehat,
	Colin Cross, Oleg Nesterov, Eric W. Biederman, linux-kernel,
	kernel-team, linaro-kernel, Paul E. McKenney

Grabbing tasklist_lock has its disadvantages, i.e. it blocks
process creation and destruction. If there are lots of processes,
blocking doesn't sound as a great idea.

For LMK, it is sufficient to surround tasks list traverse loop
with rcu_read_{,un}lock() pair.

Suggested-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
---

Also thanks to Eric and Paul for the ideas.

 drivers/staging/android/lowmemorykiller.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
index 2d8d2b7..b3ade2f 100644
--- a/drivers/staging/android/lowmemorykiller.c
+++ b/drivers/staging/android/lowmemorykiller.c
@@ -34,6 +34,7 @@
 #include <linux/mm.h>
 #include <linux/oom.h>
 #include <linux/sched.h>
+#include <linux/rcupdate.h>
 #include <linux/profile.h>
 #include <linux/notifier.h>
 
@@ -132,7 +133,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
 	}
 	selected_oom_adj = min_adj;
 
-	read_lock(&tasklist_lock);
+	rcu_read_lock();
 	for_each_process(p) {
 		struct mm_struct *mm;
 		struct signal_struct *sig;
@@ -185,7 +186,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
 	}
 	lowmem_print(4, "lowmem_shrink %lu, %x, return %d\n",
 		     sc->nr_to_scan, sc->gfp_mask, rem);
-	read_unlock(&tasklist_lock);
+	rcu_read_unlock();
 	return rem;
 }
 
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2012-02-15 13:53 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-01  4:33 [PATCH] staging: android/lowmemorykiller: Don't grab tasklist_lock Anton Vorontsov
2012-02-02 12:54 ` Oleg Nesterov
2012-02-02 17:16   ` Anton Vorontsov
2012-02-03  0:03     ` [PATCH v3] " Anton Vorontsov
2012-02-03 16:36       ` Oleg Nesterov
2012-02-03 16:30     ` [PATCH] " Oleg Nesterov
2012-02-06 16:29       ` [PATCH 1/6] oom: Make find_lock_task_mm() sparse-aware Anton Vorontsov
2012-02-06 16:35         ` Greg KH
2012-02-06 18:59           ` Anton Vorontsov
2012-02-06 19:18             ` Greg KH
2012-02-06 21:27               ` KOSAKI Motohiro
2012-02-07  4:48                 ` [PATCH v2 " Anton Vorontsov
2012-02-07  5:17                   ` KOSAKI Motohiro
2012-02-08 15:27                   ` Oleg Nesterov
2012-02-09 16:45                     ` [PATCH] sched: Turn lock_task_sighand() into a static inline Anton Vorontsov
2012-02-11 23:10                       ` [tip:sched/core] " tip-bot for Anton Vorontsov
2012-02-15 13:52                         ` Peter Zijlstra
2012-02-06 16:29       ` [PATCH 2/6] oom: Get rid of sparse warnings Anton Vorontsov
2012-02-06 21:33         ` KOSAKI Motohiro
2012-02-07  4:20           ` [PATCH v2 " Anton Vorontsov
2012-02-07  5:38             ` KOSAKI Motohiro
2012-02-07  6:23               ` Anton Vorontsov
2012-02-08 18:13                 ` KOSAKI Motohiro
2012-02-06 16:29       ` [PATCH 3/6] staging: android/lowmemorykiller: Don't grab tasklist_lock Anton Vorontsov
2012-02-06 16:36         ` Greg KH
2012-02-06 16:42           ` Anton Vorontsov
2012-02-09  0:56             ` Greg KH
2012-02-08 15:32         ` Oleg Nesterov
2012-02-06 16:29       ` [PATCH 4/6] staging: android/lowmemorykiller: Better mm handling Anton Vorontsov
2012-02-06 21:36         ` KOSAKI Motohiro
2012-02-08 15:34         ` Oleg Nesterov
2012-02-06 16:29       ` [PATCH 5/6] staging: android/lowmemorykiller: No need for task->signal check Anton Vorontsov
2012-02-06 21:38         ` KOSAKI Motohiro
2012-02-08 15:35         ` Oleg Nesterov
2012-02-06 16:30       ` [PATCH 6/6] staging: android/lowmemorykiller: Do not kill kernel threads Anton Vorontsov
2012-02-06 21:38         ` KOSAKI Motohiro
2012-02-08 15:36         ` Oleg Nesterov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).