On 5/20/14, 11:33 AM, David Sterba wrote: > On Tue, May 20, 2014 at 02:36:48PM +0800, Anand Jain wrote: >> From: Anand Jain <anand.j...@oracle.com> >> >> generally if you use >> echo "test" > /sys/fs/btrfs/<fsid>/label >> it would introduce return char at the end and it can not >> be part of the label. The correct command is >> echo -n "test" > /sys/fs/btrfs/<fsid>/label >> >> This patch will check for this user error >> >> Signed-off-by: Anand Jain <anand.j...@oracle.com> >> --- >> v2: accepts review comments. Thanks Eric and Roman >> >> fs/btrfs/sysfs.c | 20 +++++++++++++++++--- >> 1 files changed, 17 insertions(+), 3 deletions(-) >> >> diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c >> index c5eb214..ca63fcd 100644 >> --- a/fs/btrfs/sysfs.c >> +++ b/fs/btrfs/sysfs.c >> @@ -373,22 +373,36 @@ static ssize_t btrfs_label_store(struct kobject *kobj, >> struct btrfs_trans_handle *trans; >> struct btrfs_root *root = fs_info->fs_root; >> int ret; >> + char *label; >> + char *pos; >> >> - if (len >= BTRFS_LABEL_SIZE) { >> + label = kzalloc(len, GFP_NOFS); > > You can avoid allocating the buffer entirely: > > - search for '\n', if found, use only that amount of bytes > - check for maximum size, copy to label if ok
that's probably better than my strstrip idea, which requires writable memory. Odds of finding \t are slim. ;) -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html