From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:48956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Szn9q-0002bn-2D for qemu-devel@nongnu.org; Fri, 10 Aug 2012 07:13:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Szn9p-0005wB-5H for qemu-devel@nongnu.org; Fri, 10 Aug 2012 07:13:34 -0400 Received: from isrv.corpit.ru ([86.62.121.231]:46332) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Szn9o-0005vs-U6 for qemu-devel@nongnu.org; Fri, 10 Aug 2012 07:13:33 -0400 Message-ID: <5024ECD9.6020400@msgid.tls.msk.ru> Date: Fri, 10 Aug 2012 15:13:29 +0400 From: Michael Tokarev MIME-Version: 1.0 References: <1344329980-25015-1-git-send-email-kraxel@redhat.com> <1344329980-25015-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1344329980-25015-3-git-send-email-kraxel@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] usb-storage: fix SYNCHRONIZE_CACHE List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann Cc: qemu-devel@nongnu.org On 07.08.2012 12:59, Gerd Hoffmann wrote: > Commit 59310659073d85745854f2f10c4292555c5a1c51 is incomplete, > we'll arrive in the scsi command complete callback in CSW state > and must handle that case correctly. It appears to be 1.1-stable material, rigt? What's the outcome of the issue -- guest-triggerable qemu crashing? Thanks, /mjt > Signed-off-by: Gerd Hoffmann > --- > hw/usb/dev-storage.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c > index 976fe1a..ff48d91 100644 > --- a/hw/usb/dev-storage.c > +++ b/hw/usb/dev-storage.c > @@ -247,6 +247,9 @@ static void usb_msd_command_complete(SCSIRequest *req, uint32_t status, size_t r > the status read packet. */ > usb_msd_send_status(s, p); > s->mode = USB_MSDM_CBW; > + } else if (s->mode == USB_MSDM_CSW) { > + usb_msd_send_status(s, p); > + s->mode = USB_MSDM_CBW; > } else { > if (s->data_len) { > int len = (p->iov.size - p->result);