summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2014-06-11 14:53:41 -0700
committerColin Cross <ccross@android.com>2014-07-09 17:24:39 -0700
commitfef9522d9b9c0c0c5c55625a770cc58ece778da2 (patch)
treea496ad138dc5e291d3b40b3920e5ee99177395a6
parentcf8d1c22f7e239f502a7d209e2255d2997dbeb8b (diff)
downloadsystem_core-fef9522d9b9c0c0c5c55625a770cc58ece778da2.zip
system_core-fef9522d9b9c0c0c5c55625a770cc58ece778da2.tar.gz
system_core-fef9522d9b9c0c0c5c55625a770cc58ece778da2.tar.bz2
lmkd: use libprocessgroup to kill forked processes
After sending sigkill to the main process, also call into libprocessgroup to kill any processes that were forked. Bug: 15313911 Change-Id: I05577c6f5b70800ce0a01f480c8870c2c601afda
-rw-r--r--lmkd/Android.mk2
-rw-r--r--lmkd/lmkd.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/lmkd/Android.mk b/lmkd/Android.mk
index 2dd8af2..043a085 100644
--- a/lmkd/Android.mk
+++ b/lmkd/Android.mk
@@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := lmkd.c
-LOCAL_SHARED_LIBRARIES := libcutils liblog libm libc
+LOCAL_SHARED_LIBRARIES := libcutils liblog libm libc libprocessgroup
LOCAL_CFLAGS := -Werror
LOCAL_MODULE := lmkd
diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c
index 369b5ad..1aeb182 100644
--- a/lmkd/lmkd.c
+++ b/lmkd/lmkd.c
@@ -32,6 +32,7 @@
#include <cutils/sockets.h>
#include <log/log.h>
+#include <processgroup/processgroup.h>
#ifndef __unused
#define __unused __attribute__((__unused__))
@@ -591,6 +592,7 @@ static void mp_event(uint32_t events __unused) {
other_file * page_k, minfree * page_k, min_score_adj,
other_free * page_k, other_free >= 0 ? "above" : "below");
r = kill(pid, SIGKILL);
+ killProcessGroup(uid, pid, SIGKILL);
pid_remove(pid);
if (r) {