summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-mpath.c
diff options
context:
space:
mode:
authortang.junhui <tang.junhui@zte.com.cn>2016-11-04 00:37:09 -0400
committerMike Snitzer <snitzer@redhat.com>2016-11-21 09:52:08 -0500
commitcc5bd925f194c8dc7e2a4eee2c81a4f148018b08 (patch)
tree4d8f3d715414945d7b462dd1e1824ddfa53989e8 /drivers/md/dm-mpath.c
parentf97dc421280e16b8eb0c8f685610ba007ec11b79 (diff)
dm mpath: add checks for priority group count to avoid invalid memory access
This avoids the potential for invalid memory access, if/when there are no priority groups, in response to invalid arguments being sent by the user via DM message (e.g. "switch_group", "disable_group" or "enable_group"). Signed-off-by: tang.junhui <tang.junhui@zte.com.cn> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-mpath.c')
-rw-r--r--drivers/md/dm-mpath.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index d234b6c33646..f8369697af12 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -1364,7 +1364,7 @@ static int switch_pg_num(struct multipath *m, const char *pgstr)
1364 char dummy; 1364 char dummy;
1365 1365
1366 if (!pgstr || (sscanf(pgstr, "%u%c", &pgnum, &dummy) != 1) || !pgnum || 1366 if (!pgstr || (sscanf(pgstr, "%u%c", &pgnum, &dummy) != 1) || !pgnum ||
1367 (pgnum > m->nr_priority_groups)) { 1367 !m->nr_priority_groups || (pgnum > m->nr_priority_groups)) {
1368 DMWARN("invalid PG number supplied to switch_pg_num"); 1368 DMWARN("invalid PG number supplied to switch_pg_num");
1369 return -EINVAL; 1369 return -EINVAL;
1370 } 1370 }
@@ -1396,7 +1396,7 @@ static int bypass_pg_num(struct multipath *m, const char *pgstr, bool bypassed)
1396 char dummy; 1396 char dummy;
1397 1397
1398 if (!pgstr || (sscanf(pgstr, "%u%c", &pgnum, &dummy) != 1) || !pgnum || 1398 if (!pgstr || (sscanf(pgstr, "%u%c", &pgnum, &dummy) != 1) || !pgnum ||
1399 (pgnum > m->nr_priority_groups)) { 1399 !m->nr_priority_groups || (pgnum > m->nr_priority_groups)) {
1400 DMWARN("invalid PG number supplied to bypass_pg"); 1400 DMWARN("invalid PG number supplied to bypass_pg");
1401 return -EINVAL; 1401 return -EINVAL;
1402 } 1402 }