git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
drivers
/
usb
/
misc
/
ldusb.c
diff --git
a/drivers/usb/misc/ldusb.c
b/drivers/usb/misc/ldusb.c
index
966acb4
..
e2d1198
100644
(file)
--- a/
drivers/usb/misc/ldusb.c
+++ b/
drivers/usb/misc/ldusb.c
@@
-33,7
+33,6
@@
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/module.h>
-#include <linux/mutex.h>
#include <asm/uaccess.h>
#include <linux/input.h>
#include <asm/uaccess.h>
#include <linux/input.h>
@@
-173,7
+172,7
@@
struct ld_usb {
};
/* prevent races between open() and disconnect() */
};
/* prevent races between open() and disconnect() */
-static DE
FINE_MUTEX(disconnect_mutex
);
+static DE
CLARE_MUTEX(disconnect_sem
);
static struct usb_driver ld_usb_driver;
static struct usb_driver ld_usb_driver;
@@
-294,7
+293,7
@@
static int ld_usb_open(struct inode *inode, struct file *file)
nonseekable_open(inode, file);
subminor = iminor(inode);
nonseekable_open(inode, file);
subminor = iminor(inode);
-
mutex_lock(&disconnect_mutex
);
+
down(&disconnect_sem
);
interface = usb_find_interface(&ld_usb_driver, subminor);
interface = usb_find_interface(&ld_usb_driver, subminor);
@@
-356,7
+355,7
@@
unlock_exit:
up(&dev->sem);
unlock_disconnect_exit:
up(&dev->sem);
unlock_disconnect_exit:
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return retval;
}
return retval;
}
@@
-627,11
+626,12
@@
static int ld_usb_probe(struct usb_interface *intf, const struct usb_device_id *
/* allocate memory for our device state and intialize it */
/* allocate memory for our device state and intialize it */
- dev = k
z
alloc(sizeof(*dev), GFP_KERNEL);
+ dev = k
m
alloc(sizeof(*dev), GFP_KERNEL);
if (dev == NULL) {
dev_err(&intf->dev, "Out of memory\n");
goto exit;
}
if (dev == NULL) {
dev_err(&intf->dev, "Out of memory\n");
goto exit;
}
+ memset(dev, 0x00, sizeof(*dev));
init_MUTEX(&dev->sem);
dev->intf = intf;
init_waitqueue_head(&dev->read_wait);
init_MUTEX(&dev->sem);
dev->intf = intf;
init_waitqueue_head(&dev->read_wait);
@@
-741,7
+741,7
@@
static void ld_usb_disconnect(struct usb_interface *intf)
struct ld_usb *dev;
int minor;
struct ld_usb *dev;
int minor;
-
mutex_lock(&disconnect_mutex
);
+
down(&disconnect_sem
);
dev = usb_get_intfdata(intf);
usb_set_intfdata(intf, NULL);
dev = usb_get_intfdata(intf);
usb_set_intfdata(intf, NULL);
@@
-762,7
+762,7
@@
static void ld_usb_disconnect(struct usb_interface *intf)
up(&dev->sem);
}
up(&dev->sem);
}
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
dev_info(&intf->dev, "LD USB Device #%d now disconnected\n",
(minor - USB_LD_MINOR_BASE));
dev_info(&intf->dev, "LD USB Device #%d now disconnected\n",
(minor - USB_LD_MINOR_BASE));