diff mbox

scsi-hd: fix property unset case

Message ID 1425463336-20660-1-git-send-email-tumanova@linux.vnet.ibm.com
State New
Headers show

Commit Message

Ekaterina Tumanova March 4, 2015, 10:02 a.m. UTC
commit "BlockConf: Call backend functions to detect geometry and
blocksizes" causes a segmentation fault on the invalid configuration of
a scsi device without a drive.

Lets check for conf.blk before calling blkconf_blocksizes. The error
will be handled later on in scsi_realize anyway.

Reported-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
---
 hw/scsi/scsi-disk.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Kevin Wolf March 4, 2015, 12:23 p.m. UTC | #1
Am 04.03.2015 um 11:02 hat Ekaterina Tumanova geschrieben:
> commit "BlockConf: Call backend functions to detect geometry and
> blocksizes" causes a segmentation fault on the invalid configuration of
> a scsi device without a drive.
> 
> Lets check for conf.blk before calling blkconf_blocksizes. The error
> will be handled later on in scsi_realize anyway.
> 
> Reported-by: Max Reitz <mreitz@redhat.com>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>

Thanks, added the commit ID of the regression to the commit message, and
applied to the block branch.

Kevin
Max Reitz March 4, 2015, 1:58 p.m. UTC | #2
On 2015-03-04 at 07:23, Kevin Wolf wrote:
> Am 04.03.2015 um 11:02 hat Ekaterina Tumanova geschrieben:
>> commit "BlockConf: Call backend functions to detect geometry and
>> blocksizes" causes a segmentation fault on the invalid configuration of
>> a scsi device without a drive.
>>
>> Lets check for conf.blk before calling blkconf_blocksizes. The error
>> will be handled later on in scsi_realize anyway.
>>
>> Reported-by: Max Reitz <mreitz@redhat.com>
>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
>> Reviewed-by: Max Reitz <mreitz@redhat.com>
>> Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
> Thanks, added the commit ID of the regression to the commit message, and
> applied to the block branch.

But that commit is not yet upstream, so the ID won't be stable. Are you 
planning to change it once it's merged?

Max
Kevin Wolf March 4, 2015, 2:12 p.m. UTC | #3
Am 04.03.2015 um 14:58 hat Max Reitz geschrieben:
> On 2015-03-04 at 07:23, Kevin Wolf wrote:
> >Am 04.03.2015 um 11:02 hat Ekaterina Tumanova geschrieben:
> >>commit "BlockConf: Call backend functions to detect geometry and
> >>blocksizes" causes a segmentation fault on the invalid configuration of
> >>a scsi device without a drive.
> >>
> >>Lets check for conf.blk before calling blkconf_blocksizes. The error
> >>will be handled later on in scsi_realize anyway.
> >>
> >>Reported-by: Max Reitz <mreitz@redhat.com>
> >>Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> >>Reviewed-by: Max Reitz <mreitz@redhat.com>
> >>Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
> >Thanks, added the commit ID of the regression to the commit message, and
> >applied to the block branch.
> 
> But that commit is not yet upstream, so the ID won't be stable. Are
> you planning to change it once it's merged?

Unless someone touches the pull request (which he shouldn't), the commit
ID is going to stay.

Kevin
Max Reitz March 4, 2015, 2:13 p.m. UTC | #4
On 2015-03-04 at 09:12, Kevin Wolf wrote:
> Am 04.03.2015 um 14:58 hat Max Reitz geschrieben:
>> On 2015-03-04 at 07:23, Kevin Wolf wrote:
>>> Am 04.03.2015 um 11:02 hat Ekaterina Tumanova geschrieben:
>>>> commit "BlockConf: Call backend functions to detect geometry and
>>>> blocksizes" causes a segmentation fault on the invalid configuration of
>>>> a scsi device without a drive.
>>>>
>>>> Lets check for conf.blk before calling blkconf_blocksizes. The error
>>>> will be handled later on in scsi_realize anyway.
>>>>
>>>> Reported-by: Max Reitz <mreitz@redhat.com>
>>>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
>>>> Reviewed-by: Max Reitz <mreitz@redhat.com>
>>>> Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
>>> Thanks, added the commit ID of the regression to the commit message, and
>>> applied to the block branch.
>> But that commit is not yet upstream, so the ID won't be stable. Are
>> you planning to change it once it's merged?
> Unless someone touches the pull request (which he shouldn't), the commit
> ID is going to stay.

Oh, that's nice, I didn't know that. Thanks for explaining.

Max
diff mbox

Patch

diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 2921728..54d71f4 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -2291,7 +2291,12 @@  static void scsi_realize(SCSIDevice *dev, Error **errp)
 static void scsi_hd_realize(SCSIDevice *dev, Error **errp)
 {
     SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
-    blkconf_blocksizes(&s->qdev.conf);
+    /* can happen for devices without drive. The error message for missing
+     * backend will be issued in scsi_realize
+     */
+    if (s->qdev.conf.blk) {
+        blkconf_blocksizes(&s->qdev.conf);
+    }
     s->qdev.blocksize = s->qdev.conf.logical_block_size;
     s->qdev.type = TYPE_DISK;
     if (!s->product) {