Am 09.02.2015 um 18:11 hat Max Reitz geschrieben: > Only call bdrv_key_required() on the BlockDriverState if the > BlockBackend has an inserted medium. > > Signed-off-by: Max Reitz <mre...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com> > --- > hw/usb/dev-storage.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c > index 4539733..3123baf 100644 > --- a/hw/usb/dev-storage.c > +++ b/hw/usb/dev-storage.c > @@ -638,7 +638,7 @@ static void usb_msd_realize_storage(USBDevice *dev, Error > **errp) > usb_msd_handle_reset(dev); > s->scsi_dev = scsi_dev; > > - if (bdrv_key_required(blk_bs(blk))) { > + if (blk_is_inserted(blk) && bdrv_key_required(blk_bs(blk))) { > if (cur_mon) { > monitor_read_bdrv_key_start(cur_mon, blk_bs(blk), > usb_msd_password_cb, s);
Why would bdrv_key_required() ever return true when no medium is inserted? Sounds like a bug to me, like not resetting state correctly on bdrv_close() of an encrypted image. Kevin