aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/usblcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/misc/usblcd.c')
-rw-r--r--drivers/usb/misc/usblcd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/usb/misc/usblcd.c b/drivers/usb/misc/usblcd.c
index 7f7021ee4189..2db4228fbb01 100644
--- a/drivers/usb/misc/usblcd.c
+++ b/drivers/usb/misc/usblcd.c
@@ -146,7 +146,7 @@ static ssize_t lcd_read(struct file *file, char __user * buffer, size_t count, l
146 return retval; 146 return retval;
147} 147}
148 148
149static int lcd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) 149static long lcd_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
150{ 150{
151 struct usb_lcd *dev; 151 struct usb_lcd *dev;
152 u16 bcdDevice; 152 u16 bcdDevice;
@@ -158,12 +158,14 @@ static int lcd_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
158 158
159 switch (cmd) { 159 switch (cmd) {
160 case IOCTL_GET_HARD_VERSION: 160 case IOCTL_GET_HARD_VERSION:
161 lock_kernel();
161 bcdDevice = le16_to_cpu((dev->udev)->descriptor.bcdDevice); 162 bcdDevice = le16_to_cpu((dev->udev)->descriptor.bcdDevice);
162 sprintf(buf,"%1d%1d.%1d%1d", 163 sprintf(buf,"%1d%1d.%1d%1d",
163 (bcdDevice & 0xF000)>>12, 164 (bcdDevice & 0xF000)>>12,
164 (bcdDevice & 0xF00)>>8, 165 (bcdDevice & 0xF00)>>8,
165 (bcdDevice & 0xF0)>>4, 166 (bcdDevice & 0xF0)>>4,
166 (bcdDevice & 0xF)); 167 (bcdDevice & 0xF));
168 unlock_kernel();
167 if (copy_to_user((void __user *)arg,buf,strlen(buf))!=0) 169 if (copy_to_user((void __user *)arg,buf,strlen(buf))!=0)
168 return -EFAULT; 170 return -EFAULT;
169 break; 171 break;
@@ -272,7 +274,7 @@ static const struct file_operations lcd_fops = {
272 .read = lcd_read, 274 .read = lcd_read,
273 .write = lcd_write, 275 .write = lcd_write,
274 .open = lcd_open, 276 .open = lcd_open,
275 .ioctl = lcd_ioctl, 277 .unlocked_ioctl = lcd_ioctl,
276 .release = lcd_release, 278 .release = lcd_release,
277}; 279};
278 280