From 4901ee4eb12255152bc2dba56bc885982e0cedc8 Mon Sep 17 00:00:00 2001 From: Henning Meier-Geinitz Date: Tue, 23 Sep 2003 03:04:08 -0700 Subject: [PATCH] [PATCH] USB scanner driver: balancing usb_register_dev/usb_deregister_dev Balancing usb_register_dev/usb_deregister_dev in probe_scanner when a fail condition occours (Daniele Bellucci). --- drivers/usb/image/scanner.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/image/scanner.c b/drivers/usb/image/scanner.c index e6522d48c2bbd..74d967198abca 100644 --- a/drivers/usb/image/scanner.c +++ b/drivers/usb/image/scanner.c @@ -374,6 +374,8 @@ * (Daniele Bellucci). * - Report back return codes of usb_register and usb_usbmit_urb instead of -1 or * -ENONMEM (Daniele Bellucci). + * - Balancing usb_register_dev/usb_deregister_dev in probe_scanner when a fail + * condition occours (Daniele Bellucci). * * * TODO @@ -1050,6 +1052,7 @@ probe_scanner(struct usb_interface *intf, scn->scn_irq = usb_alloc_urb(0, GFP_KERNEL); if (!scn->scn_irq) { + usb_deregister_dev(intf, &scanner_class); kfree(scn); up(&scn_mutex); return -ENOMEM; @@ -1071,6 +1074,7 @@ probe_scanner(struct usb_interface *intf, retval = usb_submit_urb(scn->scn_irq, GFP_KERNEL); if (retval) { err("probe_scanner(%d): Unable to allocate INT URB.", intf->minor); + usb_deregister_dev(intf, &scanner_class); kfree(scn); up(&scn_mutex); return retval; @@ -1084,6 +1088,7 @@ probe_scanner(struct usb_interface *intf, if (have_intr) usb_unlink_urb(scn->scn_irq); usb_free_urb(scn->scn_irq); + usb_deregister_dev(intf, &scanner_class); kfree(scn); up(&scn_mutex); return -ENOMEM; @@ -1095,6 +1100,7 @@ probe_scanner(struct usb_interface *intf, if (have_intr) usb_unlink_urb(scn->scn_irq); usb_free_urb(scn->scn_irq); + usb_deregister_dev(intf, &scanner_class); kfree(scn->obuf); kfree(scn); up(&scn_mutex); -- 2.53.0