Re: [PATCH v3 5/7] mptsas: do not crash QEMU on migration errors

Laurent Vivier <[email protected]>
Newsgroups gmane.comp.emulators.qemu.block,gmane.comp.emulators.qemu
Message-ID <[email protected]>
On 7/30/26 01:19, Laurent Vivier wrote:
> From: "Michael S. Tsirkin" <[email protected]>
> 
> Currently mptsas asserts on invalid sg list count in the migration
> stream.
> 
> Fail migration gracefully instead.
> 
> Signed-off-by: Michael S. Tsirkin <[email protected]>
> [lvivier: use errp rather than qemu_file_set_error() to report error]
> Signed-off-by: Laurent Vivier <[email protected]>
> ---
> 
> Notes:
>      v2: new patch from Michael S. Tsirkin
>          https://lore.kernel.org/qemu-devel/258d84f5af807e0103bf6f59165dd7450918e58c.1784898250.git.mst@redhat.com/
>          Modified to use errp parameter with error_setg() instead of
>          qemu_file_set_error() to report error
> 
>   hw/scsi/mptsas.c | 14 ++++++++------
>   1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c
> index 45638af0afc3..34ceb6b5d25e 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"

When I removed qemu_file_set_error() I forgot to remove this include.
Perhaps it can be removed on merge? Otherwise I will send a v3.

Thanks,
Laurent

> +#include "qemu/error-report.h"
>   #include "migration/vmstate.h"
>   #include "mpi.h"
>   
> @@ -1242,12 +1244,12 @@ static void *mptsas_load_request(QEMUFile *f, SCSIRequest *sreq, Error **errp)
>       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_setg(errp, "mptsas: invalid sg list count %d in migration stream",
> +                   n);
> +        g_free(req);
> +        return NULL;
> +    }
>   
>       pci_dma_sglist_init(&req->qsg, pci, n);
>       for (i = 0; i < n; i++) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.