fs/jfs/super.c: convert simple_str to kstr
authorFabian Frederick <fabf@skynet.be>
Wed, 21 May 2014 18:29:29 +0000 (20:29 +0200)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 3 Jun 2014 19:14:00 +0000 (14:14 -0500)
This patch replaces obsolete simple_str functions by kstr

use kstrtouint for
-uid_t ( __kernel_uid32_t )
-gid_t ( __kernel_gid32_t )
-jfs_sb_info->umask
-jfs_sb_info->minblks_trim
(all unsigned int)

newLVSize is s64 -> use kstrtol

Current parse_options behaviour stays the same ie it doesn't return kstr
rc but just 0 if function failed (parse_options callsites
return -EINVAL when there's anything wrong).

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
fs/jfs/super.c

index d1096fed5a62a4f2c3e3ed30475c79f69e44d95d..adf8cb045b9efb7a038b87f9f98d75c84cf1b0ad 100644 (file)
@@ -272,7 +272,10 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                case Opt_resize:
                {
                        char *resize = args[0].from;
-                       *newLVSize = simple_strtoull(resize, &resize, 0);
+                       int rc = kstrtoll(resize, 0, newLVSize);
+
+                       if (rc)
+                               goto cleanup;
                        break;
                }
                case Opt_resize_nosize:
@@ -326,7 +329,11 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                case Opt_uid:
                {
                        char *uid = args[0].from;
-                       uid_t val = simple_strtoul(uid, &uid, 0);
+                       uid_t val;
+                       int rc = kstrtouint(uid, 0, &val);
+
+                       if (rc)
+                               goto cleanup;
                        sbi->uid = make_kuid(current_user_ns(), val);
                        if (!uid_valid(sbi->uid))
                                goto cleanup;
@@ -336,7 +343,11 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                case Opt_gid:
                {
                        char *gid = args[0].from;
-                       gid_t val = simple_strtoul(gid, &gid, 0);
+                       gid_t val;
+                       int rc = kstrtouint(gid, 0, &val);
+
+                       if (rc)
+                               goto cleanup;
                        sbi->gid = make_kgid(current_user_ns(), val);
                        if (!gid_valid(sbi->gid))
                                goto cleanup;
@@ -346,7 +357,10 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                case Opt_umask:
                {
                        char *umask = args[0].from;
-                       sbi->umask = simple_strtoul(umask, &umask, 8);
+                       int rc = kstrtouint(umask, 8, &sbi->umask);
+
+                       if (rc)
+                               goto cleanup;
                        if (sbi->umask & ~0777) {
                                pr_err("JFS: Invalid value of umask\n");
                                goto cleanup;
@@ -377,13 +391,15 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                {
                        struct request_queue *q = bdev_get_queue(sb->s_bdev);
                        char *minblks_trim = args[0].from;
+                       int rc;
                        if (blk_queue_discard(q)) {
                                *flag |= JFS_DISCARD;
-                               sbi->minblks_trim = simple_strtoull(
-                                       minblks_trim, &minblks_trim, 0);
-                       } else {
+                               rc = kstrtouint(minblks_trim, 0,
+                                               &sbi->minblks_trim);
+                               if (rc)
+                                       goto cleanup;
+                       } else
                                pr_err("JFS: discard option not supported on device\n");
-                       }
                        break;
                }