diff options
author | Neil Brown <neilb@suse.de> | 2006-06-20 10:01:43 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-06-20 10:01:43 +1000 |
commit | e81cdd9f3794d2b4452ae2297c43e16e3faf6f6a (patch) | |
tree | 8a2d56d9ab7674857eea75df7249ab83caa30734 | |
parent | 722966c66dd2c95dbe7c194acb66e7c9baf255ec (diff) | |
download | mdadm-e81cdd9f3794d2b4452ae2297c43e16e3faf6f6a.tar.gz mdadm-e81cdd9f3794d2b4452ae2297c43e16e3faf6f6a.tar.xz mdadm-e81cdd9f3794d2b4452ae2297c43e16e3faf6f6a.zip |
Stop map_dev from returning [0:0]
We sometimes need the NULL when major==minor==0.
So make sure all callers of map_dev can cope with NULL.
-rw-r--r-- | Grow.c | 4 | ||||
-rw-r--r-- | config.c | 3 | ||||
-rw-r--r-- | util.c | 13 |
3 files changed, 11 insertions, 9 deletions
@@ -657,7 +657,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file, offsets[sd->role] = sd->offset; if (fdlist[sd->role] < 0) { fprintf(stderr, Name ": %s: cannot open component %s\n", - devname, dn); + devname, dn?dn:"-unknown-"); goto abort; } } else { @@ -667,7 +667,7 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file, offsets[d] = sd->offset; if (fdlist[d]<0) { fprintf(stderr, Name ": %s: cannot open component %s\n", - devname, dn); + devname, dn?dn:"-unknown"); goto abort; } d++; @@ -242,7 +242,8 @@ mddev_dev_t load_partitions(void) minor = strtoul(mp, NULL, 10); name = map_dev(major, minor, 1); - + if (!name) + continue; d = malloc(sizeof(*d)); d->devname = strdup(name); d->next = rv; @@ -417,12 +417,9 @@ char *map_dev(int major, int minor, int create) char *std = NULL, *nonstd=NULL; int did_check = 0; - if (major == 0 && minor == 0) { - if (!create) + if (major == 0 && minor == 0) return NULL; - else - return "0:0"; - } + retry: if (!devlist_ready) { char *dev = "/dev"; @@ -636,8 +633,12 @@ int dev_open(char *dev, int flags) char *e; int fd = -1; char devname[32]; - int major = strtoul(dev, &e, 0); + int major; int minor; + + if (!dev) return -1; + + major = strtoul(dev, &e, 0); if (e > dev && *e == ':' && e[1] && (minor = strtoul(e+1, &e, 0)) >= 0 && *e == 0) { |