[PATCH 005 of 7] md: Lock address when changing attributes of component devices.
From: NeilBrown <hidden>
Date: 2007-12-14 06:28:55
Also in:
lkml
From: NeilBrown <hidden>
Date: 2007-12-14 06:28:55
Also in:
lkml
Signed-off-by: Neil Brown <redacted> ### Diffstat output ./drivers/md/md.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff .prev/drivers/md/md.c ./drivers/md/md.c
--- .prev/drivers/md/md.c 2007-12-14 16:09:01.000000000 +1100
+++ ./drivers/md/md.c 2007-12-14 16:09:03.000000000 +1100@@ -2080,12 +2080,18 @@ rdev_attr_store(struct kobject *kobj, st { 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)