From 8d98c9f4cfe4cbc5424476983aabebdef5a68f2b Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Wed, 19 Dec 2012 15:40:34 -0700 Subject: [PATCH] --- yaml --- r: 353935 b: refs/heads/master c: 2714b019fd570309e9a4cab2b988cbb7a36bbecd h: refs/heads/master i: 353933: 6db9d69d6be0f55c09985e7d93270db05491d4fc 353931: c16a83fe94fb0af166916712a1fa155d80992d36 353927: 5673f4e31f845b229f063b7813f9ac3043be1699 353919: 1d28a6fae4a26538f33a1849fea9678545d81537 v: v3 --- [refs] | 2 +- trunk/drivers/staging/comedi/comedi_fops.c | 35 +++++++--------------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/[refs] b/[refs] index fbf981fef67b..7d9d0780e0fe 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5c87fef53cb338a919a18349facaf172c1f0cf75 +refs/heads/master: 2714b019fd570309e9a4cab2b988cbb7a36bbecd diff --git a/trunk/drivers/staging/comedi/comedi_fops.c b/trunk/drivers/staging/comedi/comedi_fops.c index cf1410dfc52c..0e9b5220ce22 100644 --- a/trunk/drivers/staging/comedi/comedi_fops.c +++ b/trunk/drivers/staging/comedi/comedi_fops.c @@ -1870,39 +1870,27 @@ static ssize_t comedi_write(struct file *file, const char __user *buf, DECLARE_WAITQUEUE(wait, current); const unsigned minor = iminor(file->f_dentry->d_inode); struct comedi_file_info *info = comedi_file_info_from_minor(minor); - struct comedi_device *dev; + struct comedi_device *dev = comedi_dev_from_minor(minor); - if (info == NULL) - return -ENODEV; - dev = info->device; - if (dev == NULL) + if (!dev) return -ENODEV; if (!dev->attached) { DPRINTK("no driver configured on comedi%i\n", dev->minor); - retval = -ENODEV; - goto done; + return -ENODEV; } s = comedi_write_subdevice(info); - if (s == NULL) { - retval = -EIO; - goto done; - } + if (!s) + return -EIO; + async = s->async; - if (!nbytes) { - retval = 0; - goto done; - } - if (!s->busy) { - retval = 0; - goto done; - } - if (s->busy != file) { - retval = -EACCES; - goto done; - } + if (!s->busy || !nbytes) + return 0; + if (s->busy != file) + return -EACCES; + add_wait_queue(&async->wait_head, &wait); while (nbytes > 0 && !retval) { set_current_state(TASK_INTERRUPTIBLE); @@ -1967,7 +1955,6 @@ static ssize_t comedi_write(struct file *file, const char __user *buf, set_current_state(TASK_RUNNING); remove_wait_queue(&async->wait_head, &wait); -done: return count ? count : retval; }