diff options
author | NeilBrown <neilb@suse.de> | 2006-07-10 07:44:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-10 16:24:17 -0400 |
commit | 67463acb646904d76a8e237cc31eaa87872f30cc (patch) | |
tree | 4ccf373165581ed898328ca03365abfdd7d23a04 | |
parent | 80ca3a44f563a763fa872390dcb393f2d82027bf (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.c | 4 |
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); |