aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Shyti <andi.shyti@samsung.com>2016-07-06 05:01:17 -0400
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2016-07-13 13:59:19 -0400
commit54fcecafe5737d6987c2e6e203598e4dfb5112b0 (patch)
tree4f49f3afffbc2811c03d8a7c6eab2f04b227c31c
parent3fac031460e31b5ba1da578bf43f81a9c7a751cc (diff)
[media] lirc_dev: simplify goto paths
The code can be rearranged so that some goto paths can be removed Signed-off-by: Andi Shyti <andi.shyti@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r--drivers/media/rc/lirc_dev.c34
1 files changed, 12 insertions, 22 deletions
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c
index 59f4c93cccc4..b11d02682d13 100644
--- a/drivers/media/rc/lirc_dev.c
+++ b/drivers/media/rc/lirc_dev.c
@@ -243,52 +243,44 @@ static int lirc_allocate_driver(struct lirc_driver *d)
243 243
244 if (!d) { 244 if (!d) {
245 pr_err("driver pointer must be not NULL!\n"); 245 pr_err("driver pointer must be not NULL!\n");
246 err = -EBADRQC; 246 return -EBADRQC;
247 goto out;
248 } 247 }
249 248
250 if (!d->dev) { 249 if (!d->dev) {
251 pr_err("dev pointer not filled in!\n"); 250 pr_err("dev pointer not filled in!\n");
252 err = -EINVAL; 251 return -EINVAL;
253 goto out;
254 } 252 }
255 253
256 if (MAX_IRCTL_DEVICES <= d->minor) { 254 if (MAX_IRCTL_DEVICES <= d->minor) {
257 dev_err(d->dev, "minor must be between 0 and %d!\n", 255 dev_err(d->dev, "minor must be between 0 and %d!\n",
258 MAX_IRCTL_DEVICES - 1); 256 MAX_IRCTL_DEVICES - 1);
259 err = -EBADRQC; 257 return -EBADRQC;
260 goto out;
261 } 258 }
262 259
263 if (1 > d->code_length || (BUFLEN * 8) < d->code_length) { 260 if (1 > d->code_length || (BUFLEN * 8) < d->code_length) {
264 dev_err(d->dev, "code length must be less than %d bits\n", 261 dev_err(d->dev, "code length must be less than %d bits\n",
265 BUFLEN * 8); 262 BUFLEN * 8);
266 err = -EBADRQC; 263 return -EBADRQC;
267 goto out;
268 } 264 }
269 265
270 if (d->sample_rate) { 266 if (d->sample_rate) {
271 if (2 > d->sample_rate || HZ < d->sample_rate) { 267 if (2 > d->sample_rate || HZ < d->sample_rate) {
272 dev_err(d->dev, "invalid %d sample rate\n", 268 dev_err(d->dev, "invalid %d sample rate\n",
273 d->sample_rate); 269 d->sample_rate);
274 err = -EBADRQC; 270 return -EBADRQC;
275 goto out;
276 } 271 }
277 if (!d->add_to_buf) { 272 if (!d->add_to_buf) {
278 dev_err(d->dev, "add_to_buf not set\n"); 273 dev_err(d->dev, "add_to_buf not set\n");
279 err = -EBADRQC; 274 return -EBADRQC;
280 goto out;
281 } 275 }
282 } else if (!(d->fops && d->fops->read) && !d->rbuf) { 276 } else if (!(d->fops && d->fops->read) && !d->rbuf) {
283 dev_err(d->dev, "fops->read and rbuf are NULL!\n"); 277 dev_err(d->dev, "fops->read and rbuf are NULL!\n");
284 err = -EBADRQC; 278 return -EBADRQC;
285 goto out;
286 } else if (!d->rbuf) { 279 } else if (!d->rbuf) {
287 if (!(d->fops && d->fops->read && d->fops->poll && 280 if (!(d->fops && d->fops->read && d->fops->poll &&
288 d->fops->unlocked_ioctl)) { 281 d->fops->unlocked_ioctl)) {
289 dev_err(d->dev, "undefined read, poll, ioctl\n"); 282 dev_err(d->dev, "undefined read, poll, ioctl\n");
290 err = -EBADRQC; 283 return -EBADRQC;
291 goto out;
292 } 284 }
293 } 285 }
294 286
@@ -366,7 +358,7 @@ out_sysfs:
366 device_destroy(lirc_class, MKDEV(MAJOR(lirc_base_dev), ir->d.minor)); 358 device_destroy(lirc_class, MKDEV(MAJOR(lirc_base_dev), ir->d.minor));
367out_lock: 359out_lock:
368 mutex_unlock(&lirc_dev_lock); 360 mutex_unlock(&lirc_dev_lock);
369out: 361
370 return err; 362 return err;
371} 363}
372 364
@@ -790,9 +782,8 @@ static int __init lirc_dev_init(void)
790 782
791 lirc_class = class_create(THIS_MODULE, "lirc"); 783 lirc_class = class_create(THIS_MODULE, "lirc");
792 if (IS_ERR(lirc_class)) { 784 if (IS_ERR(lirc_class)) {
793 retval = PTR_ERR(lirc_class);
794 pr_err("class_create failed\n"); 785 pr_err("class_create failed\n");
795 goto error; 786 return PTR_ERR(lirc_class);
796 } 787 }
797 788
798 retval = alloc_chrdev_region(&lirc_base_dev, 0, MAX_IRCTL_DEVICES, 789 retval = alloc_chrdev_region(&lirc_base_dev, 0, MAX_IRCTL_DEVICES,
@@ -800,15 +791,14 @@ static int __init lirc_dev_init(void)
800 if (retval) { 791 if (retval) {
801 class_destroy(lirc_class); 792 class_destroy(lirc_class);
802 pr_err("alloc_chrdev_region failed\n"); 793 pr_err("alloc_chrdev_region failed\n");
803 goto error; 794 return retval;
804 } 795 }
805 796
806 797
807 pr_info("IR Remote Control driver registered, major %d\n", 798 pr_info("IR Remote Control driver registered, major %d\n",
808 MAJOR(lirc_base_dev)); 799 MAJOR(lirc_base_dev));
809 800
810error: 801 return 0;
811 return retval;
812} 802}
813 803
814 804