md: lock address when changing attributes of component devices
Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c5d79adba7
commit
ca38805945
|
@ -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…
Reference in a new issue