lkml.org 
[lkml]   [2003]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [linux-usb-devel] Re: [OOPS, usbcore, releaseintf] 2.6.0-test10-mm1
    On Wed, Dec 10, 2003 at 12:46:21PM -0800, Greg KH wrote:
    > > Of course, if all you want to do is unload the module then it doesn't
    > > matter which host is which. You just have to wait until they are all
    > > gone.
    >
    > Exactly, and that will happen, if we wait on that
    > class_device_unregister() call. An example of how to do that can be
    > seen in the i2c_del_adapter() function in drivers/i2c/i2c-core.c.

    Ok, below is the patch. I've only compile tested it, not run it yet.
    Please let me know if it works for you or not.

    thanks,

    greg k-h


    ===== hcd.c 1.123 vs edited =====
    --- 1.123/drivers/usb/core/hcd.c Sun Dec 7 04:29:05 2003
    +++ edited/hcd.c Wed Dec 10 13:06:19 2003
    @@ -588,6 +588,9 @@

    if (bus->release)
    bus->release(bus);
    + /* FIXME change this when the driver core gets the
    + * class_device_unregister_wait() call */
    + complete(&bus->released);
    }

    static struct class usb_host_class = {
    @@ -724,7 +727,11 @@

    clear_bit (bus->busnum, busmap.busmap);

    + /* FIXME change this when the driver core gets the
    + * class_device_unregister_wait() call */
    + init_completion(&bus->released);
    class_device_unregister(&bus->class_dev);
    + wait_for_completion(&bus->released);
    }
    EXPORT_SYMBOL (usb_deregister_bus);

    ===== usb.h 1.164 vs edited =====
    --- 1.164/include/linux/usb.h Mon Oct 6 10:46:13 2003
    +++ edited/usb.h Wed Dec 10 13:07:27 2003
    @@ -210,6 +210,8 @@

    struct class_device class_dev; /* class device for this bus */
    void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */
    + /* FIXME, remove this when the driver core gets class_device_unregister_wait */
    + struct completion released;
    };
    #define to_usb_bus(d) container_of(d, struct usb_bus, class_dev)

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:59    [W:3.386 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site