diff options
author | Dheeraj Shetty <dshetty@codeaurora.org> | 2015-01-14 17:56:25 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-05-14 10:55:30 -0700 |
commit | e7c627977f6bdfd1c93b2fe958bbadfe31d05aeb (patch) | |
tree | 65e5582ff1fba77d7a8cc41b1af29eac7ce4086a | |
parent | 94ab42d40205e17f0f733cbe2aedaa03376eba12 (diff) | |
download | android_hardware_ril-e7c627977f6bdfd1c93b2fe958bbadfe31d05aeb.tar.gz android_hardware_ril-e7c627977f6bdfd1c93b2fe958bbadfe31d05aeb.tar.bz2 android_hardware_ril-e7c627977f6bdfd1c93b2fe958bbadfe31d05aeb.zip |
Added support for acquiring CAP_BLOCK_SUSPEND capability
Linux kernel 3.10 onward power service mandates the user
space processes that use wake_lock service to have
CAP_BLOCK_SUSPEND capability. Made changes in rild
process to acquire the same
Change-Id: Ia1f83c7fc30bf15219cda97ea05fc42b5d55afaf
CRs-Fixed: 684559
-rw-r--r-- | rild/rild.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rild/rild.c b/rild/rild.c index 34ed42d..24df1e1 100644 --- a/rild/rild.c +++ b/rild/rild.c @@ -38,6 +38,7 @@ #define LIB_PATH_PROPERTY "rild.libpath" #define LIB_ARGS_PROPERTY "rild.libargs" #define MAX_LIB_ARGS 16 +#define MAX_CAP_NUM ((CAP_LAST_CAP % 32) + 1) static void usage(const char *argv0) { @@ -106,7 +107,7 @@ void switchUser() { header.version = _LINUX_CAPABILITY_VERSION_3; header.pid = 0; - struct __user_cap_data_struct data[2]; + struct __user_cap_data_struct data[MAX_CAP_NUM]; memset(&data, 0, sizeof(data)); data[CAP_TO_INDEX(CAP_NET_ADMIN)].effective |= CAP_TO_MASK(CAP_NET_ADMIN); @@ -115,6 +116,9 @@ void switchUser() { data[CAP_TO_INDEX(CAP_NET_RAW)].effective |= CAP_TO_MASK(CAP_NET_RAW); data[CAP_TO_INDEX(CAP_NET_RAW)].permitted |= CAP_TO_MASK(CAP_NET_RAW); + data[CAP_TO_INDEX(CAP_BLOCK_SUSPEND)].effective |= CAP_TO_MASK(CAP_BLOCK_SUSPEND); + data[CAP_TO_INDEX(CAP_BLOCK_SUSPEND)].permitted |= CAP_TO_MASK(CAP_BLOCK_SUSPEND); + if (capset(&header, &data[0]) == -1) { RLOGE("capset failed: %s", strerror(errno)); exit(EXIT_FAILURE); |