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 e2d1198623eb..966acb474f67 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)); |
