X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=drivers%2Fstaging%2Ffrontier%2Ftranzport.c;h=eed74f0fe0b634c9d2f8cea5a6ad9df5ce41eed8;hp=2f03f43f3a2e4c543ffc0a0511f1a94d49281a28;hb=4fd5ec509bd486b5dd8cac1a4d4d7e2cbdf7c546;hpb=d25d6fa1a95f465ff1ec4458ca15e30b2c8dffec diff --git a/drivers/staging/frontier/tranzport.c b/drivers/staging/frontier/tranzport.c index 2f03f43f3a2e..eed74f0fe0b6 100644 --- a/drivers/staging/frontier/tranzport.c +++ b/drivers/staging/frontier/tranzport.c @@ -123,7 +123,7 @@ struct tranzport_cmd { /* Structure to hold all of our device specific stuff */ struct usb_tranzport { - struct semaphore sem; /* locks this structure */ + struct mutex mtx; /* locks this structure */ struct usb_interface *intf; /* save off the usb interface pointer */ int open_count; /* number of times this port opened */ struct tranzport_cmd (*ring_buffer)[RING_BUFFER_SIZE]; @@ -198,7 +198,9 @@ static void usb_tranzport_abort_transfers(struct usb_tranzport *dev) { \ struct usb_interface *intf = to_usb_interface(dev); \ struct usb_tranzport *t = usb_get_intfdata(intf); \ - int temp = simple_strtoul(buf, NULL, 10); \ + unsigned long temp; \ + if (strict_strtoul(buf, 10, &temp)) \ + return -EINVAL; \ t->value = temp; \ return count; \ } \ @@ -255,7 +257,7 @@ static void usb_tranzport_interrupt_in_callback(struct urb *urb) if (urb->actual_length != 8) { dev_warn(&dev->intf->dev, "Urb length was %d bytes!!" - "Do something intelligent \n", + "Do something intelligent\n", urb->actual_length); } else { dbg_info(&dev->intf->dev, @@ -365,7 +367,7 @@ static int usb_tranzport_open(struct inode *inode, struct file *file) } /* lock this device */ - if (down_interruptible(&dev->sem)) { + if (mutex_lock_interruptible(&dev->mtx)) { retval = -ERESTARTSYS; goto unlock_disconnect_exit; } @@ -409,7 +411,7 @@ static int usb_tranzport_open(struct inode *inode, struct file *file) file->private_data = dev; unlock_exit: - up(&dev->sem); + mutex_unlock(&dev->mtx); unlock_disconnect_exit: mutex_unlock(&disconnect_mutex); @@ -432,7 +434,7 @@ static int usb_tranzport_release(struct inode *inode, struct file *file) goto exit; } - if (down_interruptible(&dev->sem)) { + if (mutex_lock_interruptible(&dev->mtx)) { retval = -ERESTARTSYS; goto exit; } @@ -444,7 +446,7 @@ static int usb_tranzport_release(struct inode *inode, struct file *file) if (dev->intf == NULL) { /* the device was unplugged before the file was released */ - up(&dev->sem); + mutex_unlock(&dev->mtx); /* unlock here as usb_tranzport_delete frees dev */ usb_tranzport_delete(dev); retval = -ENODEV; @@ -460,7 +462,7 @@ static int usb_tranzport_release(struct inode *inode, struct file *file) dev->open_count = 0; unlock_exit: - up(&dev->sem); + mutex_unlock(&dev->mtx); exit: return retval; @@ -510,7 +512,7 @@ static ssize_t usb_tranzport_read(struct file *file, char __user *buffer, goto exit; /* lock this object */ - if (down_interruptible(&dev->sem)) { + if (mutex_lock_interruptible(&dev->mtx)) { retval = -ERESTARTSYS; goto exit; } @@ -658,7 +660,7 @@ retval = 8; unlock_exit: /* unlock the device */ -up(&dev->sem); +mutex_unlock(&dev->mtx); exit: return retval; @@ -682,7 +684,7 @@ static ssize_t usb_tranzport_write(struct file *file, goto exit; /* lock this object */ - if (down_interruptible(&dev->sem)) { + if (mutex_lock_interruptible(&dev->mtx)) { retval = -ERESTARTSYS; goto exit; } @@ -724,7 +726,7 @@ static ssize_t usb_tranzport_write(struct file *file, } if (dev->interrupt_out_endpoint == NULL) { - err("Endpoint should not be be null! \n"); + err("Endpoint should not be be null!\n"); goto unlock_exit; } @@ -751,7 +753,7 @@ static ssize_t usb_tranzport_write(struct file *file, unlock_exit: /* unlock the device */ - up(&dev->sem); + mutex_unlock(&dev->mtx); exit: return retval; @@ -800,7 +802,7 @@ static int usb_tranzport_probe(struct usb_interface *intf, dev_err(&intf->dev, "Out of memory\n"); goto exit; } - init_MUTEX(&dev->sem); + mutex_init(&dev->mtx); dev->intf = intf; init_waitqueue_head(&dev->read_wait); init_waitqueue_head(&dev->write_wait); @@ -940,18 +942,18 @@ static void usb_tranzport_disconnect(struct usb_interface *intf) mutex_lock(&disconnect_mutex); dev = usb_get_intfdata(intf); usb_set_intfdata(intf, NULL); - down(&dev->sem); + mutex_lock(&dev->mtx); minor = intf->minor; /* give back our minor */ usb_deregister_dev(intf, &usb_tranzport_class); /* if the device is not opened, then we clean up right now */ if (!dev->open_count) { - up(&dev->sem); + mutex_unlock(&dev->mtx); usb_tranzport_delete(dev); } else { dev->intf = NULL; - up(&dev->sem); + mutex_unlock(&dev->mtx); } mutex_unlock(&disconnect_mutex);