Merge tag 'AU_LINUX_ANDROID_LA.BF64.1.2.1.05.01.00.066.050' into HEAD
AU_LINUX_ANDROID_LA.BF64.1.2.1.05.01.00.066.050 based on quic/aosp/LA.BF64.1.2.1
Change-Id: If3414ec5c6be548d33f2de1c653d54f159024ea7
diff --git a/rild/rild.c b/rild/rild.c
index 9670d27..0dead10 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)
{
@@ -101,7 +102,7 @@
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);
@@ -110,6 +111,9 @@
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);