On Wed, Feb 20, 2002 at 04:48:01PM -0800, Greg KH wrote:
> 
> [EMAIL PROTECTED], 2002-02-20 15:49:58-08:00, [EMAIL PROTECTED]
>   usb usb-uhci.c:
>       - added usb_put_urb() and usb_get_urb() logic.
> 
>  drivers/usb/usb-uhci.c |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletion(-)
> 
> 
> [EMAIL PROTECTED], 2002-02-20 15:49:24-08:00, [EMAIL PROTECTED]
>   usb usb-ohci.c:
>       - added usb_put_urb() and usb_get_urb() logic
> 
>  drivers/usb/usb-ohci.c |   13 +++++++++++++
>  1 files changed, 13 insertions(+)
> 
> 
> [EMAIL PROTECTED], 2002-02-20 15:48:47-08:00, [EMAIL PROTECTED]
>   usb uhci.c:
>       - added usb_get_urb() and usb_put_urb() logic
> 
>  drivers/usb/uhci.c |    5 +++++
>  1 files changed, 5 insertions(+)
>


# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.376   -> 1.377  
#       drivers/usb/usb-uhci.c  1.27    -> 1.28   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/20      [EMAIL PROTECTED]  1.377
# usb usb-uhci.c:
#       - added usb_put_urb() and usb_get_urb() logic.
# --------------------------------------------
#
diff -Nru a/drivers/usb/usb-uhci.c b/drivers/usb/usb-uhci.c
--- a/drivers/usb/usb-uhci.c    Wed Feb 20 16:55:11 2002
+++ b/drivers/usb/usb-uhci.c    Wed Feb 20 16:55:11 2002
@@ -1217,6 +1217,7 @@
                        urb->complete ((struct urb *) urb);
                }
                usb_dec_dev_use (usb_dev);
+               usb_put_urb (urb);
        }
        else
                spin_unlock_irqrestore (&s->urb_list_lock, flags);
@@ -1305,7 +1306,7 @@
 #else
                        kfree (urb_priv);
 #endif
-
+                       usb_put_urb (urb);
                }
        }
 }
@@ -1650,6 +1651,9 @@
                return -EINVAL;
        }
 
+       /* increment the reference count of the urb, as we now also control it */
+       urb = usb_get_urb (urb);
+
        usb_inc_dev_use (urb->dev);
 
        spin_lock_irqsave (&s->urb_list_lock, flags);
@@ -1665,6 +1669,7 @@
                     (!(urb->transfer_flags & USB_QUEUE_BULK) || 
!(queued_urb->transfer_flags & USB_QUEUE_BULK)))) {
                        spin_unlock_irqrestore (&s->urb_list_lock, flags);
                        usb_dec_dev_use (urb->dev);
+                       usb_put_urb (urb);
                        err("ENXIO %08x, flags %x, urb %p, burb 
%p",urb->pipe,urb->transfer_flags,urb,queued_urb);
                        return -ENXIO;  // urb already queued
                }
@@ -1678,6 +1683,7 @@
        if (!urb_priv) {
                usb_dec_dev_use (urb->dev);
                spin_unlock_irqrestore (&s->urb_list_lock, flags);
+               usb_put_urb (urb);
                return -ENOMEM;
        }
 
@@ -1766,6 +1772,7 @@
 #else
                kfree (urb_priv);
 #endif
+               usb_put_urb (urb);
                return ret;
        }
 
@@ -2730,6 +2737,7 @@
                        }
                        
                        usb_dec_dev_use (usb_dev);
+                       usb_put_urb (urb);
                }
        }
 
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.375   -> 1.376  
#       drivers/usb/usb-ohci.c  1.25    -> 1.26   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/20      [EMAIL PROTECTED]  1.376
# usb usb-ohci.c:
#       - added usb_put_urb() and usb_get_urb() logic
# --------------------------------------------
#
diff -Nru a/drivers/usb/usb-ohci.c b/drivers/usb/usb-ohci.c
--- a/drivers/usb/usb-ohci.c    Wed Feb 20 16:55:01 2002
+++ b/drivers/usb/usb-ohci.c    Wed Feb 20 16:55:01 2002
@@ -205,6 +205,7 @@
                urb_free_priv ((struct ohci *)urb->dev->bus->hcpriv, urb_priv);
                usb_dec_dev_use (urb->dev);
                urb->dev = NULL;
+               usb_put_urb (urb);
        }
 }
 
@@ -553,6 +554,9 @@
 //     if(usb_endpoint_halted (urb->dev, usb_pipeendpoint (pipe), usb_pipeout 
(pipe))) 
 //             return -EPIPE;
        
+       /* increment the reference count of the urb, as we now also control it */
+       urb = usb_get_urb (urb);
+
        usb_inc_dev_use (urb->dev);
        ohci = (ohci_t *) urb->dev->bus->hcpriv;
        
@@ -568,12 +572,14 @@
         * such as powering down ports */
        if (ohci->disabled) {
                usb_dec_dev_use (urb->dev);     
+               usb_put_urb (urb);
                return -ESHUTDOWN;
        }
 
        /* every endpoint has a ed, locate and fill it */
        if (!(ed = ep_add_ed (urb->dev, pipe, urb->interval, 1, mem_flags))) {
                usb_dec_dev_use (urb->dev);     
+               usb_put_urb (urb);
                return -ENOMEM;
        }
 
@@ -595,6 +601,7 @@
                        size = urb->number_of_packets;
                        if (size <= 0) {
                                usb_dec_dev_use (urb->dev);     
+                               usb_put_urb (urb);
                                return -EINVAL;
                        }
                        for (i = 0; i < urb->number_of_packets; i++) {
@@ -615,6 +622,7 @@
        urb_priv = kmalloc (sizeof (urb_priv_t) + size * sizeof (td_t *), mem_flags);
        if (!urb_priv) {
                usb_dec_dev_use (urb->dev);     
+               usb_put_urb (urb);
                return -ENOMEM;
        }
        memset (urb_priv, 0, sizeof (urb_priv_t) + size * sizeof (td_t *));
@@ -632,6 +640,7 @@
                        urb_free_priv (ohci, urb_priv);
                        spin_unlock_irqrestore (&usb_ed_lock, flags);
                        usb_dec_dev_use (urb->dev);     
+                       usb_put_urb (urb);
                        return -ENOMEM;
                }
        }       
@@ -640,6 +649,7 @@
                urb_free_priv (ohci, urb_priv);
                spin_unlock_irqrestore (&usb_ed_lock, flags);
                usb_dec_dev_use (urb->dev);     
+               usb_put_urb (urb);
                return -EINVAL;
        }
        
@@ -662,6 +672,7 @@
                                urb_free_priv (ohci, urb_priv);
                                spin_unlock_irqrestore (&usb_ed_lock, flags);
                                usb_dec_dev_use (urb->dev);     
+                               usb_put_urb (urb);
                                return bustime;
                        }
                        usb_claim_bandwidth (urb->dev, urb, bustime, usb_pipeisoc 
(urb->pipe));
@@ -2100,6 +2111,7 @@
        urb->dev = NULL;
        if (urb->complete)
                urb->complete (urb);
+       usb_put_urb (urb);
        return 0;
 }
 
@@ -2123,6 +2135,7 @@
                                urb->complete (urb);
                } else
                        urb->status = -ENOENT;
+               usb_put_urb (urb);
        }
        return 0;
 }
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.374   -> 1.375  
#         drivers/usb/uhci.c    1.23    -> 1.24   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/02/20      [EMAIL PROTECTED]  1.375
# usb uhci.c:
#       - added usb_get_urb() and usb_put_urb() logic
# --------------------------------------------
#
diff -Nru a/drivers/usb/uhci.c b/drivers/usb/uhci.c
--- a/drivers/usb/uhci.c        Wed Feb 20 16:54:54 2002
+++ b/drivers/usb/uhci.c        Wed Feb 20 16:54:54 2002
@@ -1492,6 +1492,9 @@
                return -ENODEV;
        }
 
+       /* increment the reference count of the urb, as we now also control it */
+       urb = usb_get_urb(urb);
+
        uhci = (struct uhci *)urb->dev->bus->hcpriv;
 
        INIT_LIST_HEAD(&urb->urb_list);
@@ -1505,6 +1508,7 @@
                /* Since we can have problems on the out path */
                spin_unlock_irqrestore(&urb->lock, flags);
                usb_dec_dev_use(urb->dev);
+               usb_put_urb(urb);
 
                return ret;
        }
@@ -2299,6 +2303,7 @@
                        /* We decrement the usage count after we're done */
                        /*  with everything */
                        usb_dec_dev_use(dev);
+                       usb_put_urb(urb);
                }
        }
 }

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to