Browse Source

affs: kstrdup() memory handling

There is a possibility of kstrdup() failure upon memory pressure.
Therefore, returning ENOMEM even for new_opts.

[akpm@linux-foundation.org: cleanup]
Signed-off-by: Sanidhya Kashyap <sanidhya.gatech@gmail.com>
Cc: Taesoo kim <taesoo@gatech.edu>
Cc: Fabian Frederick <fabf@skynet.be>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Sanidhya Kashyap 10 years ago
parent
commit
c8f33d0bec
1 changed files with 5 additions and 1 deletions
  1. 5 1
      fs/affs/super.c

+ 5 - 1
fs/affs/super.c

@@ -521,10 +521,14 @@ affs_remount(struct super_block *sb, int *flags, char *data)
 	int			 root_block;
 	int			 root_block;
 	unsigned long		 mount_flags;
 	unsigned long		 mount_flags;
 	int			 res = 0;
 	int			 res = 0;
-	char			*new_opts = kstrdup(data, GFP_KERNEL);
+	char			*new_opts;
 	char			 volume[32];
 	char			 volume[32];
 	char			*prefix = NULL;
 	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);
 	pr_debug("%s(flags=0x%x,opts=\"%s\")\n", __func__, *flags, data);
 
 
 	sync_filesystem(sb);
 	sync_filesystem(sb);