diff options
-rw-r--r-- | init/devices.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/init/devices.cpp b/init/devices.cpp index 9151f06..ba82f4f 100644 --- a/init/devices.cpp +++ b/init/devices.cpp @@ -487,10 +487,10 @@ static char **get_block_device_symlinks(struct uevent *uevent) return NULL; } - char **links = (char**) malloc(sizeof(char *) * 4); + char **links = (char**) malloc(sizeof(char *) * 6); if (!links) return NULL; - memset(links, 0, sizeof(char *) * 4); + memset(links, 0, sizeof(char *) * 6); INFO("found %s device %s\n", type, device); @@ -505,6 +505,11 @@ static char **get_block_device_symlinks(struct uevent *uevent) link_num++; else links[link_num] = NULL; + if (asprintf(&links[link_num], "/dev/block/bootdevice/by-name/%s", p) > 0) + link_num++; + else + links[link_num] = NULL; + free(p); } @@ -513,6 +518,11 @@ static char **get_block_device_symlinks(struct uevent *uevent) link_num++; else links[link_num] = NULL; + + if (asprintf(&links[link_num], "/dev/block/bootdevice/by-num/p%d", uevent->partition_num) > 0) + link_num++; + else + links[link_num] = NULL; } slash = strrchr(uevent->path, '/'); |