lkml.org 
[lkml]   [2008]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/13] USB: Core: fix race in device_create
    Date
    There is a race from when a device is created with device_create() and
    then the drvdata is set with a call to dev_set_drvdata() in which a
    sysfs file could be open, yet the drvdata will be NULL, causing all
    sorts of bad things to happen.

    This patch fixes the problem by using the new function,
    device_create_drvdata().

    Cc: Kay Sievers <kay.sievers@vrfy.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    drivers/usb/core/hcd.c | 6 +++---
    1 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
    index bf10e9c..09a53e7 100644
    --- a/drivers/usb/core/hcd.c
    +++ b/drivers/usb/core/hcd.c
    @@ -818,12 +818,12 @@ static int usb_register_bus(struct usb_bus *bus)
    set_bit (busnum, busmap.busmap);
    bus->busnum = busnum;

    - bus->dev = device_create(usb_host_class, bus->controller, MKDEV(0, 0),
    - "usb_host%d", busnum);
    + bus->dev = device_create_drvdata(usb_host_class, bus->controller,
    + MKDEV(0, 0), bus,
    + "usb_host%d", busnum);
    result = PTR_ERR(bus->dev);
    if (IS_ERR(bus->dev))
    goto error_create_class_dev;
    - dev_set_drvdata(bus->dev, bus);

    /* Add it to the local list of buses */
    list_add (&bus->bus_list, &usb_bus_list);
    --
    1.5.5.1


    \
     
     \ /
      Last update: 2008-05-21 00:45    [W:4.409 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site