Return-Path: Received: from mail ([unix socket]) by mail (Cyrus v2.1.15) with LMTP; Mon, 26 Mar 2007 16:24:44 +0200 X-Sieve: CMU Sieve 2.2 Received: from localhost (localhost [127.0.0.1]) by mail.ccag (Postfix) with ESMTP id EAC222F0005 for ; Mon, 26 Mar 2007 16:24:43 +0200 (CEST) Received: from mail.ccag ([127.0.0.1]) by localhost (mail [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 13778-02 for ; Mon, 26 Mar 2007 16:24:41 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.ccag (Postfix) with ESMTP id 991D92F0037 for ; Mon, 26 Mar 2007 16:24:40 +0200 (CEST) Delivered-To: info@colognechip.com Received: from blatz006.bn-online.net [217.76.96.46] by localhost with POP3 (fetchmail-6.2.3) for colognechip@localhost (single-drop); Mon, 26 Mar 2007 16:24:40 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by blatz006.blatzheim.com (Pstfx-gb-2.4-20070310-TLS) with ESMTP id B04961FF0C0 for ; Mon, 26 Mar 2007 16:21:42 +0200 (MEST) X-Virus-Scanned: amavisd-new at bn-online.net Received: from blatz006.blatzheim.com ([127.0.0.1]) by localhost (mail.bn-online.net [127.0.0.1]) (amavisd-new, port 10024) with LMTP id TvNi2QqEqYC4 for ; Mon, 26 Mar 2007 16:21:35 +0200 (MEST) Received: from iolanthe.rowland.org (iolanthe.rowland.org [192.131.102.54]) by blatz006.blatzheim.com (Pstfx-gb-2.4-20070310-TLS) with SMTP id 3BCE51FF0C7 for ; Mon, 26 Mar 2007 16:21:35 +0200 (MEST) Received: (qmail 4175 invoked by uid 2102); 26 Mar 2007 10:21:34 -0400 Date: Mon, 26 Mar 2007 10:21:34 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Karsten Keil Cc: Martin Bachem , Subject: [PATCH] HiSax: Fix USB API usage In-Reply-To: <20070323181749.GB15701@pingi.kke.suse.de> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by amavisd-new at ccag This patch (as876) improves the USB API usage in the HiSax drivers: Use usb_kill_urb() rather than usb_unlink_urb() when shutting down. Remove unnecessary checks for NULL pointers. Don't initialize urb->lock, because it is private to usbcore. Signed-off-by: Alan Stern --- Index: usb-2.6/drivers/isdn/hisax/hfc_usb.c =================================================================== --- usb-2.6.orig/drivers/isdn/hisax/hfc_usb.c +++ usb-2.6/drivers/isdn/hisax/hfc_usb.c @@ -486,7 +486,6 @@ fill_isoc_urb(struct urb *urb, struct us { int k; - spin_lock_init(&urb->lock); urb->dev = dev; urb->pipe = pipe; urb->complete = complete; @@ -579,16 +578,14 @@ stop_isoc_chain(usb_fifo * fifo) "HFC-S USB: Stopping iso chain for fifo %i.%i", fifo->fifonum, i); #endif - usb_unlink_urb(fifo->iso[i].purb); + usb_kill_urb(fifo->iso[i].purb); usb_free_urb(fifo->iso[i].purb); fifo->iso[i].purb = NULL; } } - if (fifo->urb) { - usb_unlink_urb(fifo->urb); - usb_free_urb(fifo->urb); - fifo->urb = NULL; - } + usb_kill_urb(fifo->urb); + usb_free_urb(fifo->urb); + fifo->urb = NULL; fifo->active = 0; } @@ -1631,11 +1628,9 @@ hfc_usb_probe(struct usb_interface *intf #endif /* init the chip and register the driver */ if (usb_init(context)) { - if (context->ctrl_urb) { - usb_unlink_urb(context->ctrl_urb); - usb_free_urb(context->ctrl_urb); - context->ctrl_urb = NULL; - } + usb_kill_urb(context->ctrl_urb); + usb_free_urb(context->ctrl_urb); + context->ctrl_urb = NULL; kfree(context); return (-EIO); } @@ -1687,21 +1682,15 @@ hfc_usb_disconnect(struct usb_interface i); #endif } - if (context->fifos[i].urb) { - usb_unlink_urb(context->fifos[i].urb); - usb_free_urb(context->fifos[i].urb); - context->fifos[i].urb = NULL; - } + usb_kill_urb(context->fifos[i].urb); + usb_free_urb(context->fifos[i].urb); + context->fifos[i].urb = NULL; } context->fifos[i].active = 0; } - /* wait for all URBS to terminate */ - mdelay(10); - if (context->ctrl_urb) { - usb_unlink_urb(context->ctrl_urb); - usb_free_urb(context->ctrl_urb); - context->ctrl_urb = NULL; - } + usb_kill_urb(context->ctrl_urb); + usb_free_urb(context->ctrl_urb); + context->ctrl_urb = NULL; hisax_unregister(&context->d_if); kfree(context); /* free our structure again */ } /* hfc_usb_disconnect */ Index: usb-2.6/drivers/isdn/hisax/st5481_usb.c =================================================================== --- usb-2.6.orig/drivers/isdn/hisax/st5481_usb.c +++ usb-2.6/drivers/isdn/hisax/st5481_usb.c @@ -407,7 +407,6 @@ fill_isoc_urb(struct urb *urb, struct us { int k; - spin_lock_init(&urb->lock); urb->dev=dev; urb->pipe=pipe; urb->interval = 1;