diff options
author | Sukanya Rajkhowa <srajkh@codeaurora.org> | 2015-01-14 17:56:25 -0800 |
---|---|---|
committer | Nathan Harold <nharold@google.com> | 2015-07-29 12:34:59 -0700 |
commit | 40aa12695e57655ddc4aa2e7e6dbac168ccb578c (patch) | |
tree | 45b3f7963200f2e44203c0df8aa8d8752e4c04bc | |
parent | a408c25e93fba444995af1ec8070802fb7662495 (diff) | |
download | android_hardware_ril-40aa12695e57655ddc4aa2e7e6dbac168ccb578c.tar.gz android_hardware_ril-40aa12695e57655ddc4aa2e7e6dbac168ccb578c.tar.bz2 android_hardware_ril-40aa12695e57655ddc4aa2e7e6dbac168ccb578c.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
- Rild: Use division while defining MAX_CAP_NUM
Bug: 21063398
Change-Id: Idf38d9bde398e748139a6e5d7e7d9a1ac106ec8d
-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 6324253..c63da38 100644 --- a/rild/rild.c +++ b/rild/rild.c @@ -41,6 +41,7 @@ #define LIB_PATH_PROPERTY "rild.libpath" #define LIB_ARGS_PROPERTY "rild.libargs" #define MAX_LIB_ARGS 16 +#define MAX_CAP_NUM (CAP_TO_INDEX(CAP_LAST_CAP) + 1) static void usage(const char *argv0) { fprintf(stderr, "Usage: %s -l <ril impl library> [-- <args for impl library>]\n", argv0); @@ -108,7 +109,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); @@ -117,6 +118,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); |