diff options
Diffstat (limited to 'drivers/md/dm-raid1.c')
-rw-r--r-- | drivers/md/dm-raid1.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 9bfd057be686..d039de8322f0 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
@@ -924,8 +924,9 @@ static int get_mirror(struct mirror_set *ms, struct dm_target *ti, | |||
924 | unsigned int mirror, char **argv) | 924 | unsigned int mirror, char **argv) |
925 | { | 925 | { |
926 | unsigned long long offset; | 926 | unsigned long long offset; |
927 | char dummy; | ||
927 | 928 | ||
928 | if (sscanf(argv[1], "%llu", &offset) != 1) { | 929 | if (sscanf(argv[1], "%llu%c", &offset, &dummy) != 1) { |
929 | ti->error = "Invalid offset"; | 930 | ti->error = "Invalid offset"; |
930 | return -EINVAL; | 931 | return -EINVAL; |
931 | } | 932 | } |
@@ -953,13 +954,14 @@ static struct dm_dirty_log *create_dirty_log(struct dm_target *ti, | |||
953 | { | 954 | { |
954 | unsigned param_count; | 955 | unsigned param_count; |
955 | struct dm_dirty_log *dl; | 956 | struct dm_dirty_log *dl; |
957 | char dummy; | ||
956 | 958 | ||
957 | if (argc < 2) { | 959 | if (argc < 2) { |
958 | ti->error = "Insufficient mirror log arguments"; | 960 | ti->error = "Insufficient mirror log arguments"; |
959 | return NULL; | 961 | return NULL; |
960 | } | 962 | } |
961 | 963 | ||
962 | if (sscanf(argv[1], "%u", ¶m_count) != 1) { | 964 | if (sscanf(argv[1], "%u%c", ¶m_count, &dummy) != 1) { |
963 | ti->error = "Invalid mirror log argument count"; | 965 | ti->error = "Invalid mirror log argument count"; |
964 | return NULL; | 966 | return NULL; |
965 | } | 967 | } |
@@ -986,13 +988,14 @@ static int parse_features(struct mirror_set *ms, unsigned argc, char **argv, | |||
986 | { | 988 | { |
987 | unsigned num_features; | 989 | unsigned num_features; |
988 | struct dm_target *ti = ms->ti; | 990 | struct dm_target *ti = ms->ti; |
991 | char dummy; | ||
989 | 992 | ||
990 | *args_used = 0; | 993 | *args_used = 0; |
991 | 994 | ||
992 | if (!argc) | 995 | if (!argc) |
993 | return 0; | 996 | return 0; |
994 | 997 | ||
995 | if (sscanf(argv[0], "%u", &num_features) != 1) { | 998 | if (sscanf(argv[0], "%u%c", &num_features, &dummy) != 1) { |
996 | ti->error = "Invalid number of features"; | 999 | ti->error = "Invalid number of features"; |
997 | return -EINVAL; | 1000 | return -EINVAL; |
998 | } | 1001 | } |
@@ -1036,6 +1039,7 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
1036 | unsigned int nr_mirrors, m, args_used; | 1039 | unsigned int nr_mirrors, m, args_used; |
1037 | struct mirror_set *ms; | 1040 | struct mirror_set *ms; |
1038 | struct dm_dirty_log *dl; | 1041 | struct dm_dirty_log *dl; |
1042 | char dummy; | ||
1039 | 1043 | ||
1040 | dl = create_dirty_log(ti, argc, argv, &args_used); | 1044 | dl = create_dirty_log(ti, argc, argv, &args_used); |
1041 | if (!dl) | 1045 | if (!dl) |
@@ -1044,7 +1048,7 @@ static int mirror_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
1044 | argv += args_used; | 1048 | argv += args_used; |
1045 | argc -= args_used; | 1049 | argc -= args_used; |
1046 | 1050 | ||
1047 | if (!argc || sscanf(argv[0], "%u", &nr_mirrors) != 1 || | 1051 | if (!argc || sscanf(argv[0], "%u%c", &nr_mirrors, &dummy) != 1 || |
1048 | nr_mirrors < 2 || nr_mirrors > DM_KCOPYD_MAX_REGIONS + 1) { | 1052 | nr_mirrors < 2 || nr_mirrors > DM_KCOPYD_MAX_REGIONS + 1) { |
1049 | ti->error = "Invalid number of mirrors"; | 1053 | ti->error = "Invalid number of mirrors"; |
1050 | dm_dirty_log_destroy(dl); | 1054 | dm_dirty_log_destroy(dl); |