diff --git a/fs/affs/super.c b/fs/affs/super.c
index 6819d0426af58565b86ea8b729f2f2e2f79acc7d..3f89c9e05b4077b5db9b728435713d04d5ed05ae 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -521,10 +521,14 @@ affs_remount(struct super_block *sb, int *flags, char *data)
 	int			 root_block;
 	unsigned long		 mount_flags;
 	int			 res = 0;
-	char			*new_opts = kstrdup(data, GFP_KERNEL);
+	char			*new_opts;
 	char			 volume[32];
 	char			*prefix = NULL;
 
+	new_opts = kstrdup(data, GFP_KERNEL);
+	if (!new_opts)
+		return -ENOMEM;
+
 	pr_debug("%s(flags=0x%x,opts=\"%s\")\n", __func__, *flags, data);
 
 	sync_filesystem(sb);