diff options
-rw-r--r-- | drivers/media/rc/lirc_dev.c | 34 |
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)); |
367 | out_lock: | 359 | out_lock: |
368 | mutex_unlock(&lirc_dev_lock); | 360 | mutex_unlock(&lirc_dev_lock); |
369 | out: | 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 | ||
810 | error: | 801 | return 0; |
811 | return retval; | ||
812 | } | 802 | } |
813 | 803 | ||
814 | 804 | ||