virtio-blk: Fix virtio-blk-s390 to require drive
Move the check from virtio_blk_init_pci(), where it protects only virtio-blk-pci, to virtio_blk_init(). Without that, virtio-blk-s390 initializes without a drive. I figure that can lead to null pointer dereferences. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									ac0c14d71b
								
							
						
					
					
						commit
						d75d25e34e
					
				@ -12,6 +12,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <qemu-common.h>
 | 
			
		||||
#include "qemu-error.h"
 | 
			
		||||
#include "virtio-blk.h"
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
# include <scsi/sg.h>
 | 
			
		||||
@ -490,6 +491,11 @@ VirtIODevice *virtio_blk_init(DeviceState *dev, BlockConf *conf)
 | 
			
		||||
    static int virtio_blk_id;
 | 
			
		||||
    DriveInfo *dinfo;
 | 
			
		||||
 | 
			
		||||
    if (!conf->bs) {
 | 
			
		||||
        error_report("virtio-blk-pci: drive property not set");
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    s = (VirtIOBlock *)virtio_common_init("virtio-blk", VIRTIO_ID_BLOCK,
 | 
			
		||||
                                          sizeof(struct virtio_blk_config),
 | 
			
		||||
                                          sizeof(VirtIOBlock));
 | 
			
		||||
 | 
			
		||||
@ -546,10 +546,6 @@ static int virtio_blk_init_pci(PCIDevice *pci_dev)
 | 
			
		||||
        proxy->class_code != PCI_CLASS_STORAGE_OTHER)
 | 
			
		||||
        proxy->class_code = PCI_CLASS_STORAGE_SCSI;
 | 
			
		||||
 | 
			
		||||
    if (!proxy->block.bs) {
 | 
			
		||||
        error_report("virtio-blk-pci: drive property not set");
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    vdev = virtio_blk_init(&pci_dev->qdev, &proxy->block);
 | 
			
		||||
    if (!vdev) {
 | 
			
		||||
        return -1;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user