staging: android: lowmemorykiller: Don't wait more than one second for a process to die
If a process forked and the child process was killed by the lowmemorykiller, the lowmemory killer would be disabled until the parent process reaped the child or it died itself. Signed-off-by: Arve Hjønnevåg <arve@android.com> Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9545f86e3a
commit
e5d7965f88
@@ -54,6 +54,7 @@ static size_t lowmem_minfree[6] = {
|
|||||||
static int lowmem_minfree_size = 4;
|
static int lowmem_minfree_size = 4;
|
||||||
|
|
||||||
static struct task_struct *lowmem_deathpending;
|
static struct task_struct *lowmem_deathpending;
|
||||||
|
static unsigned long lowmem_deathpending_timeout;
|
||||||
|
|
||||||
#define lowmem_print(level, x...) \
|
#define lowmem_print(level, x...) \
|
||||||
do { \
|
do { \
|
||||||
@@ -103,7 +104,8 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
|
|||||||
* Note: Currently you need CONFIG_PROFILING
|
* Note: Currently you need CONFIG_PROFILING
|
||||||
* for this to work correctly.
|
* for this to work correctly.
|
||||||
*/
|
*/
|
||||||
if (lowmem_deathpending)
|
if (lowmem_deathpending &&
|
||||||
|
time_before_eq(jiffies, lowmem_deathpending_timeout))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (lowmem_adj_size < array_size)
|
if (lowmem_adj_size < array_size)
|
||||||
@@ -178,6 +180,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc)
|
|||||||
*/
|
*/
|
||||||
#ifdef CONFIG_PROFILING
|
#ifdef CONFIG_PROFILING
|
||||||
lowmem_deathpending = selected;
|
lowmem_deathpending = selected;
|
||||||
|
lowmem_deathpending_timeout = jiffies + HZ;
|
||||||
task_handoff_register(&task_nb);
|
task_handoff_register(&task_nb);
|
||||||
#endif
|
#endif
|
||||||
force_sig(SIGKILL, selected);
|
force_sig(SIGKILL, selected);
|
||||||
|
Reference in New Issue
Block a user