From: H Hartley Sweeten Date: Wed, 19 Dec 2012 22:40:08 +0000 (-0700) Subject: staging: comedi: comedi_fops: remove the goto's in comedi_read() X-Git-Tag: upstream/snapshot3+hdmi~5696^2~528 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5c87fef53cb338a919a18349facaf172c1f0cf75;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git staging: comedi: comedi_fops: remove the goto's in comedi_read() Use comedi_dev_from_minor() to simplify the return -ENODEV tests. Cleanup the sanity checking a bit and remove the need for the goto's when returning an initial error condition. Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c index 093f403..cf1410d 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c @@ -1980,38 +1980,25 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes, 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_read_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) { @@ -2080,7 +2067,6 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes, set_current_state(TASK_RUNNING); remove_wait_queue(&async->wait_head, &wait); -done: return count ? count : retval; }