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
/
idmouse.c
diff --git
a/drivers/usb/misc/idmouse.c
b/drivers/usb/misc/idmouse.c
index
d0b1672
..
d8cde10
100644
(file)
--- a/
drivers/usb/misc/idmouse.c
+++ b/
drivers/usb/misc/idmouse.c
@@
-25,7
+25,6
@@
#include <linux/module.h>
#include <linux/smp_lock.h>
#include <linux/completion.h>
#include <linux/module.h>
#include <linux/smp_lock.h>
#include <linux/completion.h>
-#include <linux/mutex.h>
#include <asm/uaccess.h>
#include <linux/usb.h>
#include <asm/uaccess.h>
#include <linux/usb.h>
@@
-122,7
+121,7
@@
static struct usb_driver idmouse_driver = {
};
/* 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 int idmouse_create_image(struct usb_idmouse *dev)
{
static int idmouse_create_image(struct usb_idmouse *dev)
{
@@
-214,18
+213,18
@@
static int idmouse_open(struct inode *inode, struct file *file)
int result = 0;
/* prevent disconnects */
int result = 0;
/* prevent disconnects */
-
mutex_lock(&disconnect_mutex
);
+
down(&disconnect_sem
);
/* get the interface from minor number and driver information */
interface = usb_find_interface (&idmouse_driver, iminor (inode));
if (!interface) {
/* get the interface from minor number and driver information */
interface = usb_find_interface (&idmouse_driver, iminor (inode));
if (!interface) {
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return -ENODEV;
}
/* get the device information block from the interface */
dev = usb_get_intfdata(interface);
if (!dev) {
return -ENODEV;
}
/* get the device information block from the interface */
dev = usb_get_intfdata(interface);
if (!dev) {
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return -ENODEV;
}
return -ENODEV;
}
@@
-259,7
+258,7
@@
error:
up(&dev->sem);
/* unlock the disconnect semaphore */
up(&dev->sem);
/* unlock the disconnect semaphore */
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return result;
}
return result;
}
@@
-268,12
+267,12
@@
static int idmouse_release(struct inode *inode, struct file *file)
struct usb_idmouse *dev;
/* prevent a race condition with open() */
struct usb_idmouse *dev;
/* prevent a race condition with open() */
-
mutex_lock(&disconnect_mutex
);
+
down(&disconnect_sem
);
dev = (struct usb_idmouse *) file->private_data;
if (dev == NULL) {
dev = (struct usb_idmouse *) file->private_data;
if (dev == NULL) {
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return -ENODEV;
}
return -ENODEV;
}
@@
-283,7
+282,7
@@
static int idmouse_release(struct inode *inode, struct file *file)
/* are we really open? */
if (dev->open <= 0) {
up(&dev->sem);
/* are we really open? */
if (dev->open <= 0) {
up(&dev->sem);
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return -ENODEV;
}
return -ENODEV;
}
@@
-293,12
+292,12
@@
static int idmouse_release(struct inode *inode, struct file *file)
/* the device was unplugged before the file was released */
up(&dev->sem);
idmouse_delete(dev);
/* the device was unplugged before the file was released */
up(&dev->sem);
idmouse_delete(dev);
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return 0;
}
up(&dev->sem);
return 0;
}
up(&dev->sem);
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
return 0;
}
return 0;
}
@@
-341,9
+340,10
@@
static int idmouse_probe(struct usb_interface *interface,
return -ENODEV;
/* allocate memory for our device state and initialize it */
return -ENODEV;
/* allocate memory for our device state and initialize it */
- dev = k
z
alloc(sizeof(*dev), GFP_KERNEL);
+ dev = k
m
alloc(sizeof(*dev), GFP_KERNEL);
if (dev == NULL)
return -ENOMEM;
if (dev == NULL)
return -ENOMEM;
+ memset(dev, 0x00, sizeof(*dev));
init_MUTEX(&dev->sem);
dev->udev = udev;
init_MUTEX(&dev->sem);
dev->udev = udev;
@@
-400,7
+400,7
@@
static void idmouse_disconnect(struct usb_interface *interface)
struct usb_idmouse *dev;
/* prevent races with open() */
struct usb_idmouse *dev;
/* prevent races with open() */
-
mutex_lock(&disconnect_mutex
);
+
down(&disconnect_sem
);
/* get device structure */
dev = usb_get_intfdata(interface);
/* get device structure */
dev = usb_get_intfdata(interface);
@@
-422,7
+422,7
@@
static void idmouse_disconnect(struct usb_interface *interface)
if (!dev->open)
idmouse_delete(dev);
if (!dev->open)
idmouse_delete(dev);
-
mutex_unlock(&disconnect_mutex
);
+
up(&disconnect_sem
);
info("%s disconnected", DRIVER_DESC);
}
info("%s disconnected", DRIVER_DESC);
}