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

Reply via email to