lkml.org 
[lkml]   [2004]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [OOPS/HACK] atmel_cs and the latest changes in sysfs/symlink.c
    On Fri, Apr 23, 2004 at 10:19:53AM -0700, Greg KH wrote:
    > On Fri, Apr 23, 2004 at 08:31:11AM -0700, Greg KH wrote:
    > >
    > > No, we need to oops, as that's a real bug. Can you post the whole oops
    > > that was generated with this usb problem? I can't seem to duplicate
    > > this here.
    >
    > Nevermind I dug up a device here that causes this problem. I'll track
    > it down...

    Ok, here's a patch that fixes it for me. I was waiting for a good
    reason to finally get rid of this fake usb_interface structure, and now
    I have it :)

    Let me know if it solves the problem for you too and then I'll send it
    off to Linus.

    Any objections Vojtech?

    thanks,

    greg k-h


    # USB: fix up fake usb_interface structure in hiddev
    #
    # This fixes a oops in the current kernel tree.

    diff -Nru a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
    --- a/drivers/usb/input/hiddev.c Fri Apr 23 11:00:23 2004
    +++ b/drivers/usb/input/hiddev.c Fri Apr 23 11:00:23 2004
    @@ -53,7 +53,6 @@
    wait_queue_head_t wait;
    struct hid_device *hid;
    struct hiddev_list *list;
    - struct usb_interface intf;
    };

    struct hiddev_list {
    @@ -234,7 +233,7 @@
    static struct usb_class_driver hiddev_class;
    static void hiddev_cleanup(struct hiddev *hiddev)
    {
    - usb_deregister_dev(&hiddev->intf, &hiddev_class);
    + usb_deregister_dev(hiddev->hid->intf, &hiddev_class);
    hiddev_table[hiddev->minor] = NULL;
    kfree(hiddev);
    }
    @@ -775,7 +774,7 @@
    return -1;
    memset(hiddev, 0, sizeof(struct hiddev));

    - retval = usb_register_dev(&hiddev->intf, &hiddev_class);
    + retval = usb_register_dev(hid->intf, &hiddev_class);
    if (retval) {
    err("Not able to get a minor for this device.");
    kfree(hiddev);
    @@ -784,13 +783,13 @@

    init_waitqueue_head(&hiddev->wait);

    - hiddev->minor = hiddev->intf.minor;
    - hiddev_table[hiddev->intf.minor - HIDDEV_MINOR_BASE] = hiddev;
    + hiddev->minor = hid->intf->minor;
    + hiddev_table[hid->intf->minor - HIDDEV_MINOR_BASE] = hiddev;

    hiddev->hid = hid;
    hiddev->exist = 1;

    - hid->minor = hiddev->intf.minor;
    + hid->minor = hid->intf->minor;
    hid->hiddev = hiddev;

    return 0;
    -
    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 14:02    [W:0.022 / U:32.364 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site