]> xenbits.xensource.com Git - qemu-xen.git/commit
scsi-generic: avoid invalid access to struct when emulating block limits
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 22 Oct 2018 22:43:51 +0000 (00:43 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 6 Nov 2018 20:35:06 +0000 (21:35 +0100)
commit3d4a8bf0eed68a781e06118e4d1df6e2f106a1f2
tree5c3862b3d67a85b00d86085ee1e9deef9fac1313
parent57dbb58d800f62b9e56d946660dba4e8dbd20204
scsi-generic: avoid invalid access to struct when emulating block limits

Emulation of the block limits VPD page called back into scsi-disk.c,
which however expected the request to be for a SCSIDiskState and
accessed a scsi-generic device outside the bounds of its struct
(namely to retrieve s->max_unmap_size and s->max_io_size).

To avoid this, move the emulation code to a separate function that
takes a new SCSIBlockLimits struct and marshals it into the VPD
response format.

Reported-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi/Makefile.objs
hw/scsi/emulation.c [new file with mode: 0644]
hw/scsi/scsi-disk.c
hw/scsi/scsi-generic.c
include/hw/scsi/emulation.h [new file with mode: 0644]
include/hw/scsi/scsi.h