summaryrefslogtreecommitdiffstats
path: root/Manage.c
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2016-03-09 14:51:03 -0500
committerJes Sorensen <Jes.Sorensen@redhat.com>2016-03-22 14:06:07 -0400
commitfbd3e15c0a42b764b7a95fc3b2095c27cec4664a (patch)
tree69eac84373bbf3452189d39bdd526d4cdb740660 /Manage.c
parent9d1fbf65a53a210840d513d68818f507124cf88d (diff)
downloadmdadm-fbd3e15c0a42b764b7a95fc3b2095c27cec4664a.tar.gz
Manage: Manage_add(): Avoid NULL initialization of dev_st
dev_st is only ever assigned if array->not_persistent == 0, so move the second use of it into the same scope where the assignment is made. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Diffstat (limited to 'Manage.c')
-rw-r--r--Manage.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/Manage.c b/Manage.c
index 53082603..f6143967 100644
--- a/Manage.c
+++ b/Manage.c
@@ -738,7 +738,7 @@ int Manage_add(int fd, int tfd, struct mddev_dev *dv,
int raid_slot)
{
unsigned long long ldsize;
- struct supertype *dev_st = NULL;
+ struct supertype *dev_st;
int j;
mdu_disk_info_t disc;
@@ -843,20 +843,19 @@ int Manage_add(int fd, int tfd, struct mddev_dev *dv,
* simply re-add it.
*/
- if (array->not_persistent==0) {
+ if (array->not_persistent == 0) {
dev_st = dup_super(tst);
dev_st->ss->load_super(dev_st, tfd, NULL);
- }
- if (dev_st && dev_st->sb && dv->disposition != 'S') {
- int rv = attempt_re_add(fd, tfd, dv,
- dev_st, tst,
- rdev,
- update, devname,
- verbose,
- array);
- dev_st->ss->free_super(dev_st);
- if (rv)
- return rv;
+ if (dev_st->sb && dv->disposition != 'S') {
+ int rv;
+
+ rv = attempt_re_add(fd, tfd, dv, dev_st, tst,
+ rdev, update, devname,
+ verbose, array);
+ dev_st->ss->free_super(dev_st);
+ if (rv)
+ return rv;
+ }
}
if (dv->disposition == 'M') {
if (verbose > 0)