md: avoid dereferencing NULL pointer when accessing suspend_* sysfs attributes.
authorNeilBrown <neilb@suse.de>
Wed, 1 Jul 2009 01:14:04 +0000 (11:14 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 1 Jul 2009 01:14:04 +0000 (11:14 +1000)
If we try to modify one of the md/ sysfs files
  suspend_lo or suspend_hi
when the array is not active, we dereference a NULL.
Protect against that.

Cc: stable@kernel.org
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c

index 09be637d52cbb6041a67166807f948f9a00f08f2..2166af8a76546d43f6739dadbcfd4e23779bf4c1 100644 (file)
@@ -3573,7 +3573,8 @@ suspend_lo_store(mddev_t *mddev, const char *buf, size_t len)
        char *e;
        unsigned long long new = simple_strtoull(buf, &e, 10);
 
-       if (mddev->pers->quiesce == NULL)
+       if (mddev->pers == NULL || 
+           mddev->pers->quiesce == NULL)
                return -EINVAL;
        if (buf == e || (*e && *e != '\n'))
                return -EINVAL;
@@ -3601,7 +3602,8 @@ suspend_hi_store(mddev_t *mddev, const char *buf, size_t len)
        char *e;
        unsigned long long new = simple_strtoull(buf, &e, 10);
 
-       if (mddev->pers->quiesce == NULL)
+       if (mddev->pers == NULL ||
+           mddev->pers->quiesce == NULL)
                return -EINVAL;
        if (buf == e || (*e && *e != '\n'))
                return -EINVAL;