diff --git a/drivers/md/md.c b/drivers/md/md.c index 03e35386a802..26f17dd24bdf 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -6163,17 +6163,16 @@ md_attr_store(struct kobject *kobj, struct attribute *attr, if (!capable(CAP_SYS_ADMIN)) return -EACCES; - if (entry->store == array_state_store && cmd_match(page, "clear")) - kn = sysfs_break_active_protection(kobj, attr); - spin_lock(&all_mddevs_lock); if (!mddev_get(mddev)) { spin_unlock(&all_mddevs_lock); - if (kn) - sysfs_unbreak_active_protection(kn); return -EBUSY; } spin_unlock(&all_mddevs_lock); + + if (entry->store == array_state_store && cmd_match(page, "clear")) + kn = sysfs_break_active_protection(kobj, attr); + rv = entry->store(mddev, page, length); /*