Skip to content

Commit

Permalink
usb-serial: only check speed once at realize time
Browse files Browse the repository at this point in the history
Whatever the chardev is open or not, we should assure
the speed is matched each other. So, call usb_check_attach()
check speed. And then pass &error_abort at all calls to
usb_device_attach().

Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
gongleiarei authored and kraxel committed Sep 23, 2014
1 parent 594a536 commit 7334d65
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions hw/usb/dev-serial.c
Expand Up @@ -451,7 +451,6 @@ static void usb_serial_read(void *opaque, const uint8_t *buf, int size)
static void usb_serial_event(void *opaque, int event)
{
USBSerialState *s = opaque;
Error *local_err = NULL;

switch (event) {
case CHR_EVENT_BREAK:
Expand All @@ -461,11 +460,7 @@ static void usb_serial_event(void *opaque, int event)
break;
case CHR_EVENT_OPENED:
if (!s->dev.attached) {
usb_device_attach(&s->dev, &local_err);
if (local_err) {
qerror_report_err(local_err);
error_free(local_err);
}
usb_device_attach(&s->dev, &error_abort);
}
break;
case CHR_EVENT_CLOSED:
Expand All @@ -479,6 +474,7 @@ static void usb_serial_event(void *opaque, int event)
static void usb_serial_realize(USBDevice *dev, Error **errp)
{
USBSerialState *s = DO_UPCAST(USBSerialState, dev, dev);
Error *local_err = NULL;

usb_desc_create_serial(dev);
usb_desc_init(dev);
Expand All @@ -489,12 +485,18 @@ static void usb_serial_realize(USBDevice *dev, Error **errp)
return;
}

usb_check_attach(dev, &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
}

qemu_chr_add_handlers(s->cs, usb_serial_can_read, usb_serial_read,
usb_serial_event, s);
usb_serial_handle_reset(dev);

if (s->cs->be_open && !dev->attached) {
usb_device_attach(dev, errp);
usb_device_attach(dev, &error_abort);
}
}

Expand Down

0 comments on commit 7334d65

Please sign in to comment.