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

Commit 54fcecaf authored by Andi Shyti's avatar Andi Shyti Committed by Mauro Carvalho Chehab
Browse files

[media] lirc_dev: simplify goto paths



The code can be rearranged so that some goto paths can be removed

Signed-off-by: default avatarAndi Shyti <andi.shyti@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 3fac0314
Loading
Loading
Loading
Loading
+12 −22
Original line number Diff line number Diff line
@@ -243,52 +243,44 @@ static int lirc_allocate_driver(struct lirc_driver *d)

	if (!d) {
		pr_err("driver pointer must be not NULL!\n");
		err = -EBADRQC;
		goto out;
		return -EBADRQC;
	}

	if (!d->dev) {
		pr_err("dev pointer not filled in!\n");
		err = -EINVAL;
		goto out;
		return -EINVAL;
	}

	if (MAX_IRCTL_DEVICES <= d->minor) {
		dev_err(d->dev, "minor must be between 0 and %d!\n",
						MAX_IRCTL_DEVICES - 1);
		err = -EBADRQC;
		goto out;
		return -EBADRQC;
	}

	if (1 > d->code_length || (BUFLEN * 8) < d->code_length) {
		dev_err(d->dev, "code length must be less than %d bits\n",
								BUFLEN * 8);
		err = -EBADRQC;
		goto out;
		return -EBADRQC;
	}

	if (d->sample_rate) {
		if (2 > d->sample_rate || HZ < d->sample_rate) {
			dev_err(d->dev, "invalid %d sample rate\n",
							d->sample_rate);
			err = -EBADRQC;
			goto out;
			return -EBADRQC;
		}
		if (!d->add_to_buf) {
			dev_err(d->dev, "add_to_buf not set\n");
			err = -EBADRQC;
			goto out;
			return -EBADRQC;
		}
	} else if (!(d->fops && d->fops->read) && !d->rbuf) {
		dev_err(d->dev, "fops->read and rbuf are NULL!\n");
		err = -EBADRQC;
		goto out;
		return -EBADRQC;
	} else if (!d->rbuf) {
		if (!(d->fops && d->fops->read && d->fops->poll &&
		      d->fops->unlocked_ioctl)) {
			dev_err(d->dev, "undefined read, poll, ioctl\n");
			err = -EBADRQC;
			goto out;
			return -EBADRQC;
		}
	}

@@ -366,7 +358,7 @@ static int lirc_allocate_driver(struct lirc_driver *d)
	device_destroy(lirc_class, MKDEV(MAJOR(lirc_base_dev), ir->d.minor));
out_lock:
	mutex_unlock(&lirc_dev_lock);
out:

	return err;
}

@@ -790,9 +782,8 @@ static int __init lirc_dev_init(void)

	lirc_class = class_create(THIS_MODULE, "lirc");
	if (IS_ERR(lirc_class)) {
		retval = PTR_ERR(lirc_class);
		pr_err("class_create failed\n");
		goto error;
		return PTR_ERR(lirc_class);
	}

	retval = alloc_chrdev_region(&lirc_base_dev, 0, MAX_IRCTL_DEVICES,
@@ -800,15 +791,14 @@ static int __init lirc_dev_init(void)
	if (retval) {
		class_destroy(lirc_class);
		pr_err("alloc_chrdev_region failed\n");
		goto error;
		return retval;
	}


	pr_info("IR Remote Control driver registered, major %d\n",
						MAJOR(lirc_base_dev));

error:
	return retval;
	return 0;
}