Currently mptsas asserts on invalid sg list count in the migration stream. Fail migration gracefully instead.
Signed-off-by: Michael S. Tsirkin <[email protected]> --- hw/scsi/mptsas.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index 6da8a740f3..e8cbd5bc15 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -36,6 +36,8 @@ #include "qapi/error.h" #include "mptsas.h" #include "migration/qemu-file-types.h" +#include "migration/qemu-file.h" +#include "qemu/error-report.h" #include "migration/vmstate.h" #include "mpi.h" @@ -1241,12 +1243,13 @@ static void *mptsas_load_request(QEMUFile *f, SCSIRequest *sreq) qemu_get_buffer(f, (unsigned char *)&req->scsi_io, sizeof(req->scsi_io)); n = qemu_get_be32(f); - /* TODO: add a way for SCSIBusInfo's load_request to fail, - * and fail migration instead of asserting here. - * This is just one thing (there are probably more) that must be - * fixed before we can allow NDEBUG compilation. - */ - assert(n >= 0); + if (n < 0) { + error_report("mptsas: invalid sg list count %d in migration stream", + n); + qemu_file_set_error(f, -EINVAL); + g_free(req); + return NULL; + } pci_dma_sglist_init(&req->qsg, pci, n); for (i = 0; i < n; i++) { -- MST
