Loading drivers/md/md.c +7 −1 Original line number Diff line number Diff line Loading @@ -2075,12 +2075,18 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr, { struct rdev_sysfs_entry *entry = container_of(attr, struct rdev_sysfs_entry, attr); mdk_rdev_t *rdev = container_of(kobj, mdk_rdev_t, kobj); int rv; if (!entry->store) return -EIO; if (!capable(CAP_SYS_ADMIN)) return -EACCES; return entry->store(rdev, page, length); rv = mddev_lock(rdev->mddev); if (!rv) { rv = entry->store(rdev, page, length); mddev_unlock(rdev->mddev); } return rv; } static void rdev_free(struct kobject *ko) Loading Loading
drivers/md/md.c +7 −1 Original line number Diff line number Diff line Loading @@ -2075,12 +2075,18 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr, { struct rdev_sysfs_entry *entry = container_of(attr, struct rdev_sysfs_entry, attr); mdk_rdev_t *rdev = container_of(kobj, mdk_rdev_t, kobj); int rv; if (!entry->store) return -EIO; if (!capable(CAP_SYS_ADMIN)) return -EACCES; return entry->store(rdev, page, length); rv = mddev_lock(rdev->mddev); if (!rv) { rv = entry->store(rdev, page, length); mddev_unlock(rdev->mddev); } return rv; } static void rdev_free(struct kobject *ko) Loading