Revision eb5e680a hw/usb-msd.c

b/hw/usb-msd.c
315 315
    return ret;
316 316
}
317 317

  
318
static void usb_msd_cancel_io(USBPacket *p, void *opaque)
318
static void usb_msd_cancel_io(USBDevice *dev, USBPacket *p)
319 319
{
320
    MSDState *s = opaque;
320
    MSDState *s = DO_UPCAST(MSDState, dev, dev);
321 321
    s->scsi_dev->info->cancel_io(s->scsi_dev, s->tag);
322 322
    s->packet = NULL;
323 323
    s->scsi_len = 0;
......
398 398
            }
399 399
            if (s->usb_len) {
400 400
                DPRINTF("Deferring packet %p\n", p);
401
                usb_defer_packet(p, usb_msd_cancel_io, s);
402 401
                s->packet = p;
403 402
                ret = USB_RET_ASYNC;
404 403
            } else {
......
421 420
            if (s->data_len != 0 || len < 13)
422 421
                goto fail;
423 422
            /* Waiting for SCSI write to complete.  */
424
            usb_defer_packet(p, usb_msd_cancel_io, s);
425 423
            s->packet = p;
426 424
            ret = USB_RET_ASYNC;
427 425
            break;
......
455 453
            }
456 454
            if (s->usb_len) {
457 455
                DPRINTF("Deferring packet %p\n", p);
458
                usb_defer_packet(p, usb_msd_cancel_io, s);
459 456
                s->packet = p;
460 457
                ret = USB_RET_ASYNC;
461 458
            } else {
......
604 601
    .usb_desc       = &desc,
605 602
    .init           = usb_msd_initfn,
606 603
    .handle_packet  = usb_generic_handle_packet,
604
    .cancel_packet  = usb_msd_cancel_io,
607 605
    .handle_attach  = usb_desc_attach,
608 606
    .handle_reset   = usb_msd_handle_reset,
609 607
    .handle_control = usb_msd_handle_control,

Also available in: Unified diff