Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c87fef5 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca081b1d
Loading
Loading
Loading
Loading
+10 −24
Original line number Diff line number Diff line
@@ -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;
}