MD: fix null pointer deference
authorShaohua Li <shli@fb.com>
Thu, 28 Jul 2016 16:06:34 +0000 (09:06 -0700)
committerShaohua Li <shli@fb.com>
Thu, 28 Jul 2016 16:06:34 +0000 (09:06 -0700)
The md device might not have personality (for example, ddf raid array). The
issue is introduced by 8430e7e0af9a15(md: disconnect device from personality
before trying to remove it)

Reported-by: kernel test robot <xiaolong.ye@intel.com>
Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/md.c

index f77cad85404416e20fa8ea0a2a423bb6978ba9ae..c059f17b44d240c2cd7fcc135d69d6bc8791a38a 100644 (file)
@@ -2595,8 +2595,10 @@ state_store(struct md_rdev *rdev, const char *buf, size_t len)
                else
                        err = -EBUSY;
        } else if (cmd_match(buf, "remove")) {
-               clear_bit(Blocked, &rdev->flags);
-               remove_and_add_spares(rdev->mddev, rdev);
+               if (rdev->mddev->pers) {
+                       clear_bit(Blocked, &rdev->flags);
+                       remove_and_add_spares(rdev->mddev, rdev);
+               }
                if (rdev->raid_disk >= 0)
                        err = -EBUSY;
                else {