Handle policy reloads within ueventd rather than restarting it.
Restarting ueventd upon policy reloads has reportedly created stability problems for some users and could cause events to be lost. Stop restarting ueventd and instead handle policy reloads within ueventd. Also stops restarting installd upon policy reloads. Change-Id: Ic7f310d69a7c420e48fbc974000cf4a5b9ab4a3b Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
This commit is contained in:
parent
5d8554323c
commit
e2eb69db6d
|
@ -33,6 +33,7 @@
|
|||
#include <selinux/selinux.h>
|
||||
#include <selinux/label.h>
|
||||
#include <selinux/android.h>
|
||||
#include <selinux/avc.h>
|
||||
|
||||
#include <private/android_filesystem_config.h>
|
||||
#include <sys/time.h>
|
||||
|
@ -830,6 +831,15 @@ void handle_device_fd()
|
|||
struct uevent uevent;
|
||||
parse_event(msg, &uevent);
|
||||
|
||||
if (sehandle && selinux_status_updated() > 0) {
|
||||
struct selabel_handle *sehandle2;
|
||||
sehandle2 = selinux_android_file_context_handle();
|
||||
if (sehandle2) {
|
||||
selabel_close(sehandle);
|
||||
sehandle = sehandle2;
|
||||
}
|
||||
}
|
||||
|
||||
handle_device_event(&uevent);
|
||||
handle_firmware_event(&uevent);
|
||||
}
|
||||
|
@ -896,6 +906,7 @@ void device_init(void)
|
|||
sehandle = NULL;
|
||||
if (is_selinux_enabled() > 0) {
|
||||
sehandle = selinux_android_file_context_handle();
|
||||
selinux_status_open(true);
|
||||
}
|
||||
|
||||
/* is 256K enough? udev uses 16MB! */
|
||||
|
|
|
@ -395,10 +395,6 @@ service ueventd /sbin/ueventd
|
|||
critical
|
||||
seclabel u:r:ueventd:s0
|
||||
|
||||
on property:selinux.reload_policy=1
|
||||
restart ueventd
|
||||
restart installd
|
||||
|
||||
service console /system/bin/sh
|
||||
class core
|
||||
console
|
||||
|
|
Loading…
Reference in New Issue