migration: Fix migration_channel_read_peek() error path
authorAvihai Horon <avihaih@nvidia.com>
Sun, 31 Dec 2023 09:30:14 +0000 (11:30 +0200)
committerPeter Xu <peterx@redhat.com>
Thu, 4 Jan 2024 01:52:42 +0000 (09:52 +0800)
commit4f8cf323e80c17f7d4b5604f1699591326df6262
treef2e5593e7dfd4e38c9ffc000a3f69ec436f19285
parent1d3886f837d8e972366a8b58ba8afb0e5efbeed7
migration: Fix migration_channel_read_peek() error path

migration_channel_read_peek() calls qio_channel_readv_full() and handles
both cases of return value == 0 and return value < 0 the same way, by
calling error_setg() with errp. However, if return value < 0, errp is
already set, so calling error_setg() with errp will lead to an assert.

Fix it by handling these cases separately, calling error_setg() with
errp only in return value == 0 case.

Fixes: 6720c2b32725 ("migration: check magic value for deciding the mapping of channels")
Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/r/20231231093016.14204-10-avihaih@nvidia.com
Signed-off-by: Peter Xu <peterx@redhat.com>
migration/channel.c