--- drivers/usb/class/cdc-acm.c.orig 2004-04-15 20:04:47.000000000 +0200 +++ drivers/usb/class/cdc-acm.c 2004-04-15 21:20:00.255123616 +0200 @@ -585,10 +585,6 @@ for (j = 0; j < cfacm->desc.bNumInterfaces - 1; j++) { - if (usb_interface_claimed(cfacm->interface[j]) || - usb_interface_claimed(cfacm->interface[j + 1])) - continue; - /* We know we're probe()d with the control interface. * FIXME ACM doesn't guarantee the data interface is * adjacent to the control interface, or that if one @@ -696,7 +692,13 @@ acm->line.databits = 8; acm_set_line(acm, &acm->line); - usb_driver_claim_interface(&acm_driver, data, acm); + if ( (j = usb_driver_claim_interface(&acm_driver, data, acm)) != 0) { + err("claim failed"); + usb_free_urb(acm->ctrlurb); + kfree(acm); + kfree(buf); + return j; + } tty_register_device(acm_tty_driver, minor, &intf->dev);