don't bother copying ->legacy_data for monolithic case

we don't need it - the thing can't be r/o anyway and we'll never
need to extend it (mixing monolithic and individual is impossible,
extraction of LSM options only shrinks the string in place)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/fs_context.c b/fs/fs_context.c
index 7b234f6..1e0dc38 100644
--- a/fs/fs_context.c
+++ b/fs/fs_context.c
@@ -29,10 +29,8 @@
 
 enum legacy_fs_param {
 	LEGACY_FS_UNSET_PARAMS,
-	LEGACY_FS_NO_PARAMS,
 	LEGACY_FS_MONOLITHIC_PARAMS,
 	LEGACY_FS_INDIVIDUAL_PARAMS,
-	LEGACY_FS_MAGIC_PARAMS,
 };
 
 struct legacy_fs_context {
@@ -434,17 +432,8 @@
 
 	if (ctx) {
 		free_secdata(ctx->secdata);
-		switch (ctx->param_type) {
-		case LEGACY_FS_UNSET_PARAMS:
-		case LEGACY_FS_NO_PARAMS:
-			break;
-		case LEGACY_FS_MAGIC_PARAMS:
-			break; /* ctx->data is a weird pointer */
-		default:
+		if (ctx->param_type == LEGACY_FS_INDIVIDUAL_PARAMS)
 			kfree(ctx->legacy_data);
-			break;
-		}
-
 		kfree(ctx);
 	}
 }
@@ -461,18 +450,13 @@
 	if (!ctx)
 		return -ENOMEM;
 
-	switch (ctx->param_type) {
-	case LEGACY_FS_MONOLITHIC_PARAMS:
-	case LEGACY_FS_INDIVIDUAL_PARAMS:
+	if (ctx->param_type == LEGACY_FS_INDIVIDUAL_PARAMS) {
 		ctx->legacy_data = kmemdup(src_ctx->legacy_data,
 					   src_ctx->data_size, GFP_KERNEL);
 		if (!ctx->legacy_data) {
 			kfree(ctx);
 			return -ENOMEM;
 		}
-		/* Fall through */
-	default:
-		break;
 	}
 
 	fc->fs_private = ctx;
@@ -510,8 +494,7 @@
 		return 0;
 	}
 
-	if (ctx->param_type != LEGACY_FS_UNSET_PARAMS &&
-	    ctx->param_type != LEGACY_FS_INDIVIDUAL_PARAMS)
+	if (ctx->param_type == LEGACY_FS_MONOLITHIC_PARAMS)
 		return invalf(fc, "VFS: Legacy: Can't mix monolithic and individual options");
 
 	switch (param->type) {
@@ -566,26 +549,9 @@
 		return -EINVAL;
 	}
 
-	if (!data) {
-		ctx->param_type = LEGACY_FS_NO_PARAMS;
-		return 0;
-	}
-
 	ctx->data_size = data_size;
-	if (data_size > 0) {
-		ctx->legacy_data = kmemdup(data, data_size, GFP_KERNEL);
-		if (!ctx->legacy_data)
-			return -ENOMEM;
-		ctx->param_type = LEGACY_FS_MONOLITHIC_PARAMS;
-	} else {
-		/* Some filesystems pass weird pointers through that we don't
-		 * want to copy.  They can indicate this by setting data_size
-		 * to 0.
-		 */
-		ctx->legacy_data = data;
-		ctx->param_type = LEGACY_FS_MAGIC_PARAMS;
-	}
-
+	ctx->legacy_data = data;
+	ctx->param_type = LEGACY_FS_MONOLITHIC_PARAMS;
 	return 0;
 }
 
@@ -598,16 +564,11 @@
 	struct legacy_fs_context *ctx = fc->fs_private;
 	int err;
 
-	switch (ctx->param_type) {
-	case LEGACY_FS_UNSET_PARAMS:
-		ctx->param_type = LEGACY_FS_NO_PARAMS;
-		/* Fall through */
-	case LEGACY_FS_NO_PARAMS:
-	case LEGACY_FS_MAGIC_PARAMS:
+	if (ctx->param_type == LEGACY_FS_UNSET_PARAMS)
+		ctx->param_type = LEGACY_FS_MONOLITHIC_PARAMS;
+
+	if (!ctx->legacy_data)
 		return 0;
-	default:
-		break;
-	}
 
 	if (fc->fs_type->fs_flags & FS_BINARY_MOUNTDATA)
 		return 0;