Loading include/private/android_filesystem_config.h +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #define AID_SDCARD_RW 1015 /* external storage write access */ #define AID_VPN 1016 /* vpn system */ #define AID_KEYSTORE 1017 /* keystore subsystem */ #define AID_USB 1018 /* USB devices */ #define AID_SHELL 2000 /* adb and debug shell user */ #define AID_CACHE 2001 /* cache access */ Loading Loading @@ -100,6 +101,7 @@ static struct android_id_info android_ids[] = { { "sdcard_rw", AID_SDCARD_RW, }, { "vpn", AID_VPN, }, { "keystore", AID_KEYSTORE, }, { "usb", AID_USB, }, { "inet", AID_INET, }, { "net_raw", AID_NET_RAW, }, { "net_admin", AID_NET_ADMIN, }, Loading init/builtins.c +1 −0 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ static struct { const char *name; unsigned flag; } mount_flags[] = { { "move", MS_MOVE }, { "noatime", MS_NOATIME }, { "nosuid", MS_NOSUID }, { "nodev", MS_NODEV }, Loading init/devices.c +24 −2 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ static struct perms_ devperms[] = { { "/dev/ts0710mux", 0640, AID_RADIO, AID_RADIO, 1 }, { "/dev/ppp", 0660, AID_RADIO, AID_VPN, 0 }, { "/dev/tun", 0640, AID_VPN, AID_VPN, 0 }, { "/dev/bus/usb/", 0660, AID_ROOT, AID_USB, 1 }, { NULL, 0, 0, 0, 0 }, }; Loading Loading @@ -380,6 +381,7 @@ static void parse_event(const char *msg, struct uevent *uevent) static void handle_device_event(struct uevent *uevent) { char devpath[96]; int devpath_ready = 0; char *base, *name; int block; Loading @@ -405,7 +407,26 @@ static void handle_device_event(struct uevent *uevent) } else { block = 0; /* this should probably be configurable somehow */ if(!strncmp(uevent->subsystem, "graphics", 8)) { if (!strncmp(uevent->subsystem, "usb", 3)) { if (!strcmp(uevent->subsystem, "usb")) { /* This imitates the file system that would be created * if we were using devfs instead. * Minors are broken up into groups of 128, starting at "001" */ int bus_id = uevent->minor / 128 + 1; int device_id = uevent->minor % 128 + 1; /* build directories */ mkdir("/dev/bus", 0755); mkdir("/dev/bus/usb", 0755); snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d", bus_id); mkdir(devpath, 0755); snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d/%03d", bus_id, device_id); devpath_ready = 1; } else { /* ignore other USB events */ return; } } else if (!strncmp(uevent->subsystem, "graphics", 8)) { base = "/dev/graphics/"; mkdir(base, 0755); } else if (!strncmp(uevent->subsystem, "oncrpc", 6)) { Loading Loading @@ -435,6 +456,7 @@ static void handle_device_event(struct uevent *uevent) base = "/dev/"; } if (!devpath_ready) snprintf(devpath, sizeof(devpath), "%s%s", base, name); if(!strcmp(uevent->action, "add")) { Loading Loading
include/private/android_filesystem_config.h +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #define AID_SDCARD_RW 1015 /* external storage write access */ #define AID_VPN 1016 /* vpn system */ #define AID_KEYSTORE 1017 /* keystore subsystem */ #define AID_USB 1018 /* USB devices */ #define AID_SHELL 2000 /* adb and debug shell user */ #define AID_CACHE 2001 /* cache access */ Loading Loading @@ -100,6 +101,7 @@ static struct android_id_info android_ids[] = { { "sdcard_rw", AID_SDCARD_RW, }, { "vpn", AID_VPN, }, { "keystore", AID_KEYSTORE, }, { "usb", AID_USB, }, { "inet", AID_INET, }, { "net_raw", AID_NET_RAW, }, { "net_admin", AID_NET_ADMIN, }, Loading
init/builtins.c +1 −0 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ static struct { const char *name; unsigned flag; } mount_flags[] = { { "move", MS_MOVE }, { "noatime", MS_NOATIME }, { "nosuid", MS_NOSUID }, { "nodev", MS_NODEV }, Loading
init/devices.c +24 −2 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ static struct perms_ devperms[] = { { "/dev/ts0710mux", 0640, AID_RADIO, AID_RADIO, 1 }, { "/dev/ppp", 0660, AID_RADIO, AID_VPN, 0 }, { "/dev/tun", 0640, AID_VPN, AID_VPN, 0 }, { "/dev/bus/usb/", 0660, AID_ROOT, AID_USB, 1 }, { NULL, 0, 0, 0, 0 }, }; Loading Loading @@ -380,6 +381,7 @@ static void parse_event(const char *msg, struct uevent *uevent) static void handle_device_event(struct uevent *uevent) { char devpath[96]; int devpath_ready = 0; char *base, *name; int block; Loading @@ -405,7 +407,26 @@ static void handle_device_event(struct uevent *uevent) } else { block = 0; /* this should probably be configurable somehow */ if(!strncmp(uevent->subsystem, "graphics", 8)) { if (!strncmp(uevent->subsystem, "usb", 3)) { if (!strcmp(uevent->subsystem, "usb")) { /* This imitates the file system that would be created * if we were using devfs instead. * Minors are broken up into groups of 128, starting at "001" */ int bus_id = uevent->minor / 128 + 1; int device_id = uevent->minor % 128 + 1; /* build directories */ mkdir("/dev/bus", 0755); mkdir("/dev/bus/usb", 0755); snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d", bus_id); mkdir(devpath, 0755); snprintf(devpath, sizeof(devpath), "/dev/bus/usb/%03d/%03d", bus_id, device_id); devpath_ready = 1; } else { /* ignore other USB events */ return; } } else if (!strncmp(uevent->subsystem, "graphics", 8)) { base = "/dev/graphics/"; mkdir(base, 0755); } else if (!strncmp(uevent->subsystem, "oncrpc", 6)) { Loading Loading @@ -435,6 +456,7 @@ static void handle_device_event(struct uevent *uevent) base = "/dev/"; } if (!devpath_ready) snprintf(devpath, sizeof(devpath), "%s%s", base, name); if(!strcmp(uevent->action, "add")) { Loading