From 5733f387be6cef3836ed06ed897ab43897eb470d Mon Sep 17 00:00:00 2001 From: John Stultz Date: Thu, 28 Jul 2016 12:35:31 -0700 Subject: [PATCH] Zygote: Add CAP_WAKE_ALARM to system_server to properly support timerfd alarms The when the timerfd alarm logic was added to the kernel, an oversight was made and the interface does not check for the CAP_WAKE_ALARM permissions as required via other kernel methods to trigger an alarm timer. In v4.8-rc kernels, the change 2895a5e5b3a ("timerfd: Reject ALARM timerfds without CAP_WAKE_ALARM") was added by Eric Caruso . After this change (which may be backported to -stable), the AlarmManager will fail on the first timerfd_create call, and will not be able to set the time or handle other necessary functions. The solution here is to add CAP_WAKE_ALARM to the system_server process. Change-Id: Ifdb16f3ef42711e553f727165de3922d484b5be4 Signed-off-by: John Stultz --- core/java/com/android/internal/os/ZygoteInit.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 8c6653d1e3f01..4ebe6d6c6e6d0 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -595,7 +595,8 @@ public class ZygoteInit { OsConstants.CAP_SYS_NICE, OsConstants.CAP_SYS_RESOURCE, OsConstants.CAP_SYS_TIME, - OsConstants.CAP_SYS_TTY_CONFIG + OsConstants.CAP_SYS_TTY_CONFIG, + OsConstants.CAP_WAKE_ALARM ); /* Hardcoded command line to start the system server */ String args[] = {