Tidy bypass_pg_num --- diff/drivers/md/dm-mpath.c 2005-01-12 19:13:36.000000000 +0000 +++ source/drivers/md/dm-mpath.c 2005-01-12 19:14:11.000000000 +0000 @@ -807,21 +807,19 @@ struct priority_group *pg; unsigned pgnum; - if (!pgstr || (sscanf(pgstr, "%u", &pgnum) != 1) || !pgnum) - goto error; + if (!pgstr || (sscanf(pgstr, "%u", &pgnum) != 1) || !pgnum || + (pgnum > m->nr_priority_groups)) { + DMWARN("invalid PG number supplied to bypass_pg"); + return -EINVAL; + } list_for_each_entry(pg, &m->priority_groups, list) { - if (--pgnum) - continue; - - bypass_pg(m, pg, bypassed); - - return 0; + if (!--pgnum) + break; } -error: - DMWARN("invalid PG number supplied to bypass_pg"); - return -EINVAL; + bypass_pg(m, pg, bypassed); + return 0; } /*