All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error.
@ 2018-11-21 12:47 Richard W.M. Jones
  2018-11-21 14:20 ` Kevin Wolf
  2018-11-21 18:31 ` Paolo Bonzini
  0 siblings, 2 replies; 4+ messages in thread
From: Richard W.M. Jones @ 2018-11-21 12:47 UTC (permalink / raw)
  To: pbonzini; +Cc: famz, kwolf, qemu-devel, qemu-block

Commit 40dce4ee6 "scsi-disk: fix rerror/werror=ignore" introduced a
bug which causes qemu to crash with the assertion error below if the
host file or disk returns an error:

  qemu-system-x86_64: hw/scsi/scsi-bus.c:1374: scsi_req_complete:
  Assertion `req->status == -1' failed.

Kevin Wolf suggested this fix:

  < kwolf> Hm, should the final return false; in that patch
           actually be a return true?
  < kwolf> Because I think he didn't intend to change anything
           except BLOCK_ERROR_ACTION_IGNORE

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Buglink: https://bugs.launchpad.net/qemu/+bug/1804323
---
 hw/scsi/scsi-disk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 6eb258d3f3..0e9027c8f3 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -482,7 +482,7 @@ static bool scsi_handle_rw_error(SCSIDiskReq *r, int error, bool acct_failed)
     if (action == BLOCK_ERROR_ACTION_STOP) {
         scsi_req_retry(&r->req);
     }
-    return false;
+    return true;
 }
 
 static void scsi_write_complete_noio(SCSIDiskReq *r, int ret)
-- 
2.19.0.rc0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error.
  2018-11-21 12:47 [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error Richard W.M. Jones
@ 2018-11-21 14:20 ` Kevin Wolf
  2018-11-21 18:31 ` Paolo Bonzini
  1 sibling, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2018-11-21 14:20 UTC (permalink / raw)
  To: Richard W.M. Jones; +Cc: pbonzini, famz, qemu-devel, qemu-block

Am 21.11.2018 um 13:47 hat Richard W.M. Jones geschrieben:
> Commit 40dce4ee6 "scsi-disk: fix rerror/werror=ignore" introduced a
> bug which causes qemu to crash with the assertion error below if the
> host file or disk returns an error:
> 
>   qemu-system-x86_64: hw/scsi/scsi-bus.c:1374: scsi_req_complete:
>   Assertion `req->status == -1' failed.
> 
> Kevin Wolf suggested this fix:
> 
>   < kwolf> Hm, should the final return false; in that patch
>            actually be a return true?
>   < kwolf> Because I think he didn't intend to change anything
>            except BLOCK_ERROR_ACTION_IGNORE
> 
> Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
> Buglink: https://bugs.launchpad.net/qemu/+bug/1804323

Thanks, applied to the block branch.

Kevin

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error.
  2018-11-21 12:47 [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error Richard W.M. Jones
  2018-11-21 14:20 ` Kevin Wolf
@ 2018-11-21 18:31 ` Paolo Bonzini
  2018-11-22 10:30   ` Kevin Wolf
  1 sibling, 1 reply; 4+ messages in thread
From: Paolo Bonzini @ 2018-11-21 18:31 UTC (permalink / raw)
  To: Richard W.M. Jones; +Cc: famz, kwolf, qemu-devel, qemu-block

On 21/11/18 13:47, Richard W.M. Jones wrote:
> Commit 40dce4ee6 "scsi-disk: fix rerror/werror=ignore" introduced a
> bug which causes qemu to crash with the assertion error below if the
> host file or disk returns an error:
> 
>   qemu-system-x86_64: hw/scsi/scsi-bus.c:1374: scsi_req_complete:
>   Assertion `req->status == -1' failed.
> 
> Kevin Wolf suggested this fix:
> 
>   < kwolf> Hm, should the final return false; in that patch
>            actually be a return true?
>   < kwolf> Because I think he didn't intend to change anything
>            except BLOCK_ERROR_ACTION_IGNORE
> 
> Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
> Buglink: https://bugs.launchpad.net/qemu/+bug/1804323
> ---
>  hw/scsi/scsi-disk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
> index 6eb258d3f3..0e9027c8f3 100644
> --- a/hw/scsi/scsi-disk.c
> +++ b/hw/scsi/scsi-disk.c
> @@ -482,7 +482,7 @@ static bool scsi_handle_rw_error(SCSIDiskReq *r, int error, bool acct_failed)
>      if (action == BLOCK_ERROR_ACTION_STOP) {
>          scsi_req_retry(&r->req);
>      }
> -    return false;
> +    return true;
>  }
>  
>  static void scsi_write_complete_noio(SCSIDiskReq *r, int ret)
> 

Looks good.  I was confused because now the function always returns
true.  "If an arm was returning true, the other must be returning false...".

Paolo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error.
  2018-11-21 18:31 ` Paolo Bonzini
@ 2018-11-22 10:30   ` Kevin Wolf
  0 siblings, 0 replies; 4+ messages in thread
From: Kevin Wolf @ 2018-11-22 10:30 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Richard W.M. Jones, famz, qemu-devel, qemu-block

Am 21.11.2018 um 19:31 hat Paolo Bonzini geschrieben:
> On 21/11/18 13:47, Richard W.M. Jones wrote:
> > Commit 40dce4ee6 "scsi-disk: fix rerror/werror=ignore" introduced a
> > bug which causes qemu to crash with the assertion error below if the
> > host file or disk returns an error:
> > 
> >   qemu-system-x86_64: hw/scsi/scsi-bus.c:1374: scsi_req_complete:
> >   Assertion `req->status == -1' failed.
> > 
> > Kevin Wolf suggested this fix:
> > 
> >   < kwolf> Hm, should the final return false; in that patch
> >            actually be a return true?
> >   < kwolf> Because I think he didn't intend to change anything
> >            except BLOCK_ERROR_ACTION_IGNORE
> > 
> > Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
> > Buglink: https://bugs.launchpad.net/qemu/+bug/1804323
> > ---
> >  hw/scsi/scsi-disk.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
> > index 6eb258d3f3..0e9027c8f3 100644
> > --- a/hw/scsi/scsi-disk.c
> > +++ b/hw/scsi/scsi-disk.c
> > @@ -482,7 +482,7 @@ static bool scsi_handle_rw_error(SCSIDiskReq *r, int error, bool acct_failed)
> >      if (action == BLOCK_ERROR_ACTION_STOP) {
> >          scsi_req_retry(&r->req);
> >      }
> > -    return false;
> > +    return true;
> >  }
> >  
> >  static void scsi_write_complete_noio(SCSIDiskReq *r, int ret)
> > 
> 
> Looks good.  I was confused because now the function always returns
> true.  "If an arm was returning true, the other must be returning false...".

Yes. And we should probably simplify the function by removing the return
value, but the minimal fix is better for 3.1.

Kevin

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-11-22 10:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-21 12:47 [Qemu-devel] [PATCH] scsi-disk: Fix crash if underlying host file or disk returns error Richard W.M. Jones
2018-11-21 14:20 ` Kevin Wolf
2018-11-21 18:31 ` Paolo Bonzini
2018-11-22 10:30   ` Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.