migration: fix coverity migrate_mode finding

Coverity diagnoses a possible out-of-range array index here ...

    static GSList *migration_blockers[MIG_MODE__MAX];

    fill_source_migration_info() {
        GSList *cur_blocker = migration_blockers[migrate_mode()];

... because it does not know that MIG_MODE__MAX will never be returned as
a migration mode.  To fix, assert so in migrate_mode().

Fixes: fa3673e497 ("migration: per-mode blockers")

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/r/1699907025-215450-1-git-send-email-steven.sistare@oracle.com
Signed-off-by: Peter Xu <peterx@redhat.com>
master
Steve Sistare 2023-11-13 12:23:45 -08:00 committed by Peter Xu
parent 3fc58efa93
commit b12635ff08
1 changed files with 3 additions and 1 deletions

View File

@ -833,8 +833,10 @@ uint64_t migrate_max_postcopy_bandwidth(void)
MigMode migrate_mode(void)
{
MigrationState *s = migrate_get_current();
MigMode mode = s->parameters.mode;
return s->parameters.mode;
assert(mode >= 0 && mode < MIG_MODE__MAX);
return mode;
}
int migrate_multifd_channels(void)