Message ID | 1425463336-20660-1-git-send-email-tumanova@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
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
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
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
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 --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) {