aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-07-10 07:44:19 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-10 16:24:17 -0400
commit67463acb646904d76a8e237cc31eaa87872f30cc (patch)
tree4ccf373165581ed898328ca03365abfdd7d23a04
parent80ca3a44f563a763fa872390dcb393f2d82027bf (diff)
[PATCH] md: require CAP_SYS_ADMIN for (re-)configuring md devices via sysfs
The ioctl requires CAP_SYS_ADMIN, so sysfs should too. Note that we don't require CAP_SYS_ADMIN for reading attributes even though the ioctl does. There is no reason to limit the read access, and much of the information is already available via /proc/mdstat Cc: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/md/md.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index c0da5eedc245..a5286beddcf5 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -1926,6 +1926,8 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr,
1926 1926
1927 if (!entry->store) 1927 if (!entry->store)
1928 return -EIO; 1928 return -EIO;
1929 if (!capable(CAP_SYS_ADMIN))
1930 return -EACCES;
1929 return entry->store(rdev, page, length); 1931 return entry->store(rdev, page, length);
1930} 1932}
1931 1933
@@ -2859,6 +2861,8 @@ md_attr_store(struct kobject *kobj, struct attribute *attr,
2859 2861
2860 if (!entry->store) 2862 if (!entry->store)
2861 return -EIO; 2863 return -EIO;
2864 if (!capable(CAP_SYS_ADMIN))
2865 return -EACCES;
2862 rv = mddev_lock(mddev); 2866 rv = mddev_lock(mddev);
2863 if (!rv) { 2867 if (!rv) {
2864 rv = entry->store(mddev, page, length); 2868 rv = entry->store(mddev, page, length);