Squashed file permission fixes for "adb push"

adb: configure /system file permission with fs_config

adbd changes the permissions of files uploaded by copying
owner's permission to group and other. This causes kernel
load failure if any changes are made to kernel modules
followed by ``adb push'' or ``adb sync'' because file mode
644 would become 666.

The change uses fs_config to get the target mode of files.

In addition, the SELinux file label is set incorrectly
on synced files. Set the label properly.

Signed-off-by: Liang Cheng <licheng@nvidia.com>
Bug: 12264775

Fix "adb push /sdcard/filename"

Don't assume that calling chown(filename, getuid(), getgid())
will always succeed. In the case of /sdcard, a file you create
will be owned by root, so the chown call will fail.

Instead, use uid=gid=-1 so that the chown call is truly a no-op.

Ignore the results of calling chmod. Again, for /sdcard, the
chmod call will never succeed, because the file isn't owned by
the shell user.

Bug: 12441485
Change-Id: I43ad63b86ad62d58847718f5220204f3ec07392d
ueventd.rc: Change owner of graphics drivers to system

iWifi Display service needs permission to open these drivers.

Change-Id: I1d9e4ae372f09ecf4104888a9910d09903d892d1
(cherry picked from commit f087420bf5eada3017e107a3a8da4e74f683da18)
(cherry picked from commit 1b3f9226cd3ad681a0ef08038d874921ca62ee4c)
(cherry picked from commit 5b4becc1b814b0f9e96d4f3aaec380d74f4b0739)
Add support for init mknod command.

This is required for statically allocated devices.
These don't hit ueventd and hence doesn't automatically get a device node.

Change-Id: I83d19f0666e1f1bbb369b226fba019994d403a89
Add support for socket security context specification.

Add an optional argument to the socket option for specifying
a SELinux security context for the socket.  Normally the socket
security context is automatically computed from the service security
context or set using the seclabel option, but this facility allows
dealing with two scenarios that cannot be addressed using the existing
mechanisms:
1) Use of logwrapper to wrap a service.
In this case, init cannot determine the service security context
as it does not directly execute it and we do not want logwrapper
to run in the same domain as the service.

2) Situations where a service has multiple sockets and we want to
label them distinctly.

Signed-off-by: Humberto Borba <humberos@gmail.com>
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Change-Id: I7ae9088c326a2140e56a8044bfb21a91505aea11
init: fix cache permissions

required fo dexopt

Signed-off-by: Humberto Borba <humberos@gmail.com>
Change-Id: I299509b68e82a2b3c60eabec1998eaa12c60bc71
Merge remote-tracking branch 'cm/android-4.4' into android-4.4