Commit 16f89b1d authored by Joe Thornber's avatar Joe Thornber Committed by Linus Torvalds

[PATCH] dm: stripe constructor validity check

There's a bug in the dm-stripe.c constructor failing top check if enough
destinations are handed in. [Heinz Mauelshagen]
parent 9c11c61b
...@@ -131,6 +131,15 @@ static int stripe_ctr(struct dm_target *ti, int argc, char **argv) ...@@ -131,6 +131,15 @@ static int stripe_ctr(struct dm_target *ti, int argc, char **argv)
return -EINVAL; return -EINVAL;
} }
/*
* Do we have enough arguments for that many stripes ?
*/
if (argc != (2 + 2 * stripes)) {
ti->error = "dm-stripe: Not enough destinations "
"specified";
return -EINVAL;
}
sc = alloc_context(stripes); sc = alloc_context(stripes);
if (!sc) { if (!sc) {
ti->error = "dm-stripe: Memory allocation for striped context " ti->error = "dm-stripe: Memory allocation for striped context "
...@@ -151,13 +160,6 @@ static int stripe_ctr(struct dm_target *ti, int argc, char **argv) ...@@ -151,13 +160,6 @@ static int stripe_ctr(struct dm_target *ti, int argc, char **argv)
* Get the stripe destinations. * Get the stripe destinations.
*/ */
for (i = 0; i < stripes; i++) { for (i = 0; i < stripes; i++) {
if (argc < 2) {
ti->error = "dm-stripe: Not enough destinations "
"specified";
kfree(sc);
return -EINVAL;
}
argv += 2; argv += 2;
r = get_stripe(ti, sc, i, argv); r = get_stripe(ti, sc, i, argv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment