aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util-linux/mdev.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index 99e487532..7508930f7 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -101,8 +101,12 @@ static char *build_alias(char *alias, const char *device_name)
101 return alias; 101 return alias;
102} 102}
103 103
104/* mknod in /dev based on a path like "/sys/block/hda/hda1" */ 104/* mknod in /dev based on a path like "/sys/block/hda/hda1"
105/* NB: "mdev -s" may call us many times, do not leak memory/fds! */ 105 * NB1: path parameter needs to have SCRATCH_SIZE scratch bytes
106 * after NUL, but we promise to not mangle (IOW: to restore if needed)
107 * path string.
108 * NB2: "mdev -s" may call us many times, do not leak memory/fds!
109 */
106static void make_device(char *path, int delete) 110static void make_device(char *path, int delete)
107{ 111{
108 char *device_name; 112 char *device_name;
@@ -565,10 +569,7 @@ int mdev_main(int argc UNUSED_PARAM, char **argv)
565 make_device(temp, 1); 569 make_device(temp, 1);
566 } 570 }
567 else if (strcmp(action, "add") == 0) { 571 else if (strcmp(action, "add") == 0) {
568 /* make_device mangles its parameter, use a copy */ 572 make_device(temp, 0);
569 char *s = xstrdup(temp);
570 make_device(s, 0);
571 free(s);
572 if (ENABLE_FEATURE_MDEV_LOAD_FIRMWARE) { 573 if (ENABLE_FEATURE_MDEV_LOAD_FIRMWARE) {
573 if (fw) 574 if (fw)
574 load_firmware(fw, temp); 575 load_firmware(fw, temp);