init: call restorecon on /sys

Not all files on /sys are not getting labeled properly. Fix them.

Change-Id: I9dcff76354e7f50d41f1b6e702836cfbbc149278
This commit is contained in:
Nick Kralevich 2013-07-11 15:38:26 -07:00
parent 935bd3e315
commit ae76f6dbcf
3 changed files with 17 additions and 0 deletions

View File

@ -945,6 +945,7 @@ int main(int argc, char **argv)
restorecon("/dev");
restorecon("/dev/socket");
restorecon("/dev/__properties__");
restorecon_recursive("/sys");
is_charger = !strcmp(bootmode, "charger");

15
init/util.c Executable file → Normal file
View File

@ -22,6 +22,7 @@
#include <ctype.h>
#include <errno.h>
#include <time.h>
#include <ftw.h>
#include <selinux/label.h>
@ -519,3 +520,17 @@ int restorecon(const char *pathname)
freecon(secontext);
return 0;
}
static int nftw_restorecon(const char* filename, const struct stat* statptr,
int fileflags, struct FTW* pftw)
{
restorecon(filename);
return 0;
}
int restorecon_recursive(const char* pathname)
{
int fd_limit = 20;
int flags = FTW_DEPTH | FTW_MOUNT | FTW_PHYS;
return nftw(pathname, nftw_restorecon, fd_limit, flags);
}

View File

@ -41,4 +41,5 @@ void get_hardware_name(char *hardware, unsigned int *revision);
void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu));
int make_dir(const char *path, mode_t mode);
int restorecon(const char *pathname);
int restorecon_recursive(const char *pathname);
#endif