From 454c640d93822cd31cf59eb89d77e04a89fd9ec9 Mon Sep 17 00:00:00 2001 From: Jeff Liu Date: Wed, 14 Sep 2011 14:11:21 +0800 Subject: [PATCH] --- yaml --- r: 274662 b: refs/heads/master c: 83c8c9bde0add721f7509aa446455183b040b931 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/super.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 62fe7e3efc7a..b996875ea100 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5ca496604b5975d371bb669ee6c2394bcbea818f +refs/heads/master: 83c8c9bde0add721f7509aa446455183b040b931 diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index 266d1f35465d..09ce951666ea 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -419,7 +419,7 @@ static int btrfs_parse_early_options(const char *options, fmode_t flags, u64 *subvol_rootid, struct btrfs_fs_devices **fs_devices) { substring_t args[MAX_OPT_ARGS]; - char *opts, *orig, *p; + char *device_name, *opts, *orig, *p; int error = 0; int intarg; @@ -470,8 +470,14 @@ static int btrfs_parse_early_options(const char *options, fmode_t flags, } break; case Opt_device: - error = btrfs_scan_one_device(match_strdup(&args[0]), + device_name = match_strdup(&args[0]); + if (!device_name) { + error = -ENOMEM; + goto out; + } + error = btrfs_scan_one_device(device_name, flags, holder, fs_devices); + kfree(device_name); if (error) goto out; break;