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

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

staging: comedi: comedi_fops: cleanup comedi_mmap()



Use comedi_dev_from_minor() to simplify the return -ENODEV tests.

Change the (foo == NULL) tests to simply (!foo).

Use a local variable to hold a pointer to the async->buf_page_list[]
when doing the remap_pfn_range(). This cleans up the ugly line breaks
for the page_to_pfn(virt_to_page(...) operation.

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 401d99de
Loading
Loading
Loading
Loading
+14 −15
Original line number Diff line number Diff line
@@ -1766,39 +1766,38 @@ static struct vm_operations_struct comedi_vm_ops = {
static int comedi_mmap(struct file *file, struct vm_area_struct *vma)
{
	const unsigned minor = iminor(file->f_dentry->d_inode);
	struct comedi_async *async = NULL;
	struct comedi_file_info *info = comedi_file_info_from_minor(minor);
	struct comedi_device *dev = comedi_dev_from_minor(minor);
	struct comedi_subdevice *s;
	struct comedi_async *async;
	unsigned long start = vma->vm_start;
	unsigned long size;
	int n_pages;
	int i;
	int retval;
	struct comedi_subdevice *s;
	struct comedi_file_info *info = comedi_file_info_from_minor(minor);
	struct comedi_device *dev;

	if (info == NULL)
		return -ENODEV;
	dev = info->device;
	if (dev == NULL)
	if (!dev)
		return -ENODEV;

	mutex_lock(&dev->mutex);

	if (!dev->attached) {
		DPRINTK("no driver configured on comedi%i\n", dev->minor);
		retval = -ENODEV;
		goto done;
	}

	if (vma->vm_flags & VM_WRITE)
		s = comedi_write_subdevice(info);
	else
		s = comedi_read_subdevice(info);

	if (s == NULL) {
	if (!s) {
		retval = -EINVAL;
		goto done;
	}

	async = s->async;
	if (async == NULL) {
	if (!async) {
		retval = -EINVAL;
		goto done;
	}
@@ -1821,11 +1820,11 @@ static int comedi_mmap(struct file *file, struct vm_area_struct *vma)

	n_pages = size >> PAGE_SHIFT;
	for (i = 0; i < n_pages; ++i) {
		struct comedi_buf_page *buf = &async->buf_page_list[i];

		if (remap_pfn_range(vma, start,
				    page_to_pfn(virt_to_page
						(async->buf_page_list
						 [i].virt_addr)), PAGE_SIZE,
				    PAGE_SHARED)) {
				    page_to_pfn(virt_to_page(buf->virt_addr)),
				    PAGE_SIZE, PAGE_SHARED)) {
			retval = -EAGAIN;
			goto done;
		}