diff options
Diffstat (limited to 'drivers/usb/misc/ldusb.c')
-rw-r--r-- | drivers/usb/misc/ldusb.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/usb/misc/ldusb.c b/drivers/usb/misc/ldusb.c index e2d1198623e..966acb474f6 100644 --- a/drivers/usb/misc/ldusb.c +++ b/drivers/usb/misc/ldusb.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/init.h> | 33 | #include <linux/init.h> |
34 | #include <linux/slab.h> | 34 | #include <linux/slab.h> |
35 | #include <linux/module.h> | 35 | #include <linux/module.h> |
36 | #include <linux/mutex.h> | ||
36 | 37 | ||
37 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
38 | #include <linux/input.h> | 39 | #include <linux/input.h> |
@@ -172,7 +173,7 @@ struct ld_usb { | |||
172 | }; | 173 | }; |
173 | 174 | ||
174 | /* prevent races between open() and disconnect() */ | 175 | /* prevent races between open() and disconnect() */ |
175 | static DECLARE_MUTEX(disconnect_sem); | 176 | static DEFINE_MUTEX(disconnect_mutex); |
176 | 177 | ||
177 | static struct usb_driver ld_usb_driver; | 178 | static struct usb_driver ld_usb_driver; |
178 | 179 | ||
@@ -293,7 +294,7 @@ static int ld_usb_open(struct inode *inode, struct file *file) | |||
293 | nonseekable_open(inode, file); | 294 | nonseekable_open(inode, file); |
294 | subminor = iminor(inode); | 295 | subminor = iminor(inode); |
295 | 296 | ||
296 | down(&disconnect_sem); | 297 | mutex_lock(&disconnect_mutex); |
297 | 298 | ||
298 | interface = usb_find_interface(&ld_usb_driver, subminor); | 299 | interface = usb_find_interface(&ld_usb_driver, subminor); |
299 | 300 | ||
@@ -355,7 +356,7 @@ unlock_exit: | |||
355 | up(&dev->sem); | 356 | up(&dev->sem); |
356 | 357 | ||
357 | unlock_disconnect_exit: | 358 | unlock_disconnect_exit: |
358 | up(&disconnect_sem); | 359 | mutex_unlock(&disconnect_mutex); |
359 | 360 | ||
360 | return retval; | 361 | return retval; |
361 | } | 362 | } |
@@ -626,12 +627,11 @@ static int ld_usb_probe(struct usb_interface *intf, const struct usb_device_id * | |||
626 | 627 | ||
627 | /* allocate memory for our device state and intialize it */ | 628 | /* allocate memory for our device state and intialize it */ |
628 | 629 | ||
629 | dev = kmalloc(sizeof(*dev), GFP_KERNEL); | 630 | dev = kzalloc(sizeof(*dev), GFP_KERNEL); |
630 | if (dev == NULL) { | 631 | if (dev == NULL) { |
631 | dev_err(&intf->dev, "Out of memory\n"); | 632 | dev_err(&intf->dev, "Out of memory\n"); |
632 | goto exit; | 633 | goto exit; |
633 | } | 634 | } |
634 | memset(dev, 0x00, sizeof(*dev)); | ||
635 | init_MUTEX(&dev->sem); | 635 | init_MUTEX(&dev->sem); |
636 | dev->intf = intf; | 636 | dev->intf = intf; |
637 | init_waitqueue_head(&dev->read_wait); | 637 | init_waitqueue_head(&dev->read_wait); |
@@ -741,7 +741,7 @@ static void ld_usb_disconnect(struct usb_interface *intf) | |||
741 | struct ld_usb *dev; | 741 | struct ld_usb *dev; |
742 | int minor; | 742 | int minor; |
743 | 743 | ||
744 | down(&disconnect_sem); | 744 | mutex_lock(&disconnect_mutex); |
745 | 745 | ||
746 | dev = usb_get_intfdata(intf); | 746 | dev = usb_get_intfdata(intf); |
747 | usb_set_intfdata(intf, NULL); | 747 | usb_set_intfdata(intf, NULL); |
@@ -762,7 +762,7 @@ static void ld_usb_disconnect(struct usb_interface *intf) | |||
762 | up(&dev->sem); | 762 | up(&dev->sem); |
763 | } | 763 | } |
764 | 764 | ||
765 | up(&disconnect_sem); | 765 | mutex_unlock(&disconnect_mutex); |
766 | 766 | ||
767 | dev_info(&intf->dev, "LD USB Device #%d now disconnected\n", | 767 | dev_info(&intf->dev, "LD USB Device #%d now disconnected\n", |
768 | (minor - USB_LD_MINOR_BASE)); | 768 | (minor - USB_LD_MINOR_BASE)); |