qmp_migrate guarantees that cpr_channel is not null for MIG_MODE_CPR_TRANSFER when cpr_state_save is called:
qmp_migrate() if (s->parameters.mode == MIG_MODE_CPR_TRANSFER && !cpr_channel) { return; } cpr_state_save(cpr_channel) but cpr_state_save checks for mode differently before using channel, and Coverity cannot infer that they are equivalent in outgoing QEMU, and warns that channel may be NULL: cpr_state_save(channel) MigMode mode = migrate_mode(); if (mode == MIG_MODE_CPR_TRANSFER) { f = cpr_transfer_output(channel, errp); To make Coverity happy, use parameters.mode in cpr_state_save. Resolves: Coverity CID 1590980 Reported-by: Peter Maydell <peter.mayd...@linaro.org> Signed-off-by: Steve Sistare <steven.sist...@oracle.com> --- migration/cpr.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/migration/cpr.c b/migration/cpr.c index 584b0b9..7f20bd5 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -8,6 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "migration/cpr.h" +#include "migration/migration.h" #include "migration/misc.h" #include "migration/options.h" #include "migration/qemu-file.h" @@ -132,7 +133,7 @@ int cpr_state_save(MigrationChannel *channel, Error **errp) { int ret; QEMUFile *f; - MigMode mode = migrate_mode(); + MigMode mode = migrate_get_current()->parameters.mode; trace_cpr_state_save(MigMode_str(mode)); -- 1.8.3.1