aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/sysfs.c
diff options
context:
space:
mode:
authorChris Mason <clm@fb.com>2016-05-17 17:24:44 -0400
committerChris Mason <clm@fb.com>2016-05-17 17:24:44 -0400
commita88336d13c66fc171f336c6332fcb67339894e08 (patch)
tree595935ba3afc91dce9be83ca65932f3cf1379436 /fs/btrfs/sysfs.c
parent02da2d72174c61988eb4456b53f405e3ebdebce4 (diff)
parent680834ca0ad4e9827048d4bda1e38db69c3dd1e4 (diff)
Merge branch 'for-chris-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.7
Diffstat (limited to 'fs/btrfs/sysfs.c')
-rw-r--r--fs/btrfs/sysfs.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index 539e7b5e3f86..4879656bda3c 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -120,6 +120,9 @@ static ssize_t btrfs_feature_attr_store(struct kobject *kobj,
120 if (!fs_info) 120 if (!fs_info)
121 return -EPERM; 121 return -EPERM;
122 122
123 if (fs_info->sb->s_flags & MS_RDONLY)
124 return -EROFS;
125
123 ret = kstrtoul(skip_spaces(buf), 0, &val); 126 ret = kstrtoul(skip_spaces(buf), 0, &val);
124 if (ret) 127 if (ret)
125 return ret; 128 return ret;
@@ -364,7 +367,13 @@ static ssize_t btrfs_label_show(struct kobject *kobj,
364{ 367{
365 struct btrfs_fs_info *fs_info = to_fs_info(kobj); 368 struct btrfs_fs_info *fs_info = to_fs_info(kobj);
366 char *label = fs_info->super_copy->label; 369 char *label = fs_info->super_copy->label;
367 return snprintf(buf, PAGE_SIZE, label[0] ? "%s\n" : "%s", label); 370 ssize_t ret;
371
372 spin_lock(&fs_info->super_lock);
373 ret = snprintf(buf, PAGE_SIZE, label[0] ? "%s\n" : "%s", label);
374 spin_unlock(&fs_info->super_lock);
375
376 return ret;
368} 377}
369 378
370static ssize_t btrfs_label_store(struct kobject *kobj, 379static ssize_t btrfs_label_store(struct kobject *kobj,
@@ -374,6 +383,9 @@ static ssize_t btrfs_label_store(struct kobject *kobj,
374 struct btrfs_fs_info *fs_info = to_fs_info(kobj); 383 struct btrfs_fs_info *fs_info = to_fs_info(kobj);
375 size_t p_len; 384 size_t p_len;
376 385
386 if (!fs_info)
387 return -EPERM;
388
377 if (fs_info->sb->s_flags & MS_RDONLY) 389 if (fs_info->sb->s_flags & MS_RDONLY)
378 return -EROFS; 390 return -EROFS;
379 391