staging: most: aim-cdev: fix reported error codes
authorChristian Gromm <christian.gromm@microchip.com>
Fri, 19 Aug 2016 11:09:33 +0000 (13:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 21 Aug 2016 14:50:38 +0000 (16:50 +0200)
Currently, the aim-cdev is returning different error codes for the same
root cause. This patch is needed to get rid of the module's inconsistency
when reporting errors.

Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/most/aim-cdev/cdev.c

index de4f76abfb47cd35812082140e7b4da9511df7b5..6ca2440b07c4ff8f8016c977aa5f3537e6db1e64 100644 (file)
@@ -130,7 +130,7 @@ static int aim_open(struct inode *inode, struct file *filp)
        if (!c->dev) {
                pr_info("WARN: Device is destroyed\n");
                mutex_unlock(&c->io_mutex);
-               return -EBUSY;
+               return -ENODEV;
        }
 
        if (c->access_ref) {
@@ -201,7 +201,7 @@ static ssize_t aim_write(struct file *filp, const char __user *buf,
        }
 
        if (unlikely(!c->dev)) {
-               ret = -EPIPE;
+               ret = -ENODEV;
                goto unlock;
        }
 
@@ -256,7 +256,7 @@ aim_read(struct file *filp, char __user *buf, size_t count, loff_t *offset)
        /* make sure we don't submit to gone devices */
        if (unlikely(!c->dev)) {
                mutex_unlock(&c->io_mutex);
-               return -EIO;
+               return -ENODEV;
        }
 
        to_copy = min_t(size_t,
@@ -366,7 +366,7 @@ static int aim_rx_completion(struct mbo *mbo)
        spin_lock(&c->unlink);
        if (!c->access_ref || !c->dev) {
                spin_unlock(&c->unlink);
-               return -EFAULT;
+               return -ENODEV;
        }
        kfifo_in(&c->fifo, &mbo, 1);
        spin_unlock(&c->unlink);
@@ -499,6 +499,8 @@ static struct most_aim cdev_aim = {
 
 static int __init mod_init(void)
 {
+       int err;
+
        pr_info("init()\n");
 
        INIT_LIST_HEAD(&channel_list);
@@ -506,16 +508,17 @@ static int __init mod_init(void)
        ida_init(&minor_id);
 
        if (alloc_chrdev_region(&aim_devno, 0, 50, "cdev") < 0)
-               return -EIO;
+               return -ENOMEM;
        major = MAJOR(aim_devno);
 
        aim_class = class_create(THIS_MODULE, "most_cdev_aim");
        if (IS_ERR(aim_class)) {
                pr_err("no udev support\n");
+               err = PTR_ERR(aim_class);
                goto free_cdev;
        }
-
-       if (most_register_aim(&cdev_aim))
+       err = most_register_aim(&cdev_aim);
+       if (err)
                goto dest_class;
        return 0;
 
@@ -523,7 +526,7 @@ dest_class:
        class_destroy(aim_class);
 free_cdev:
        unregister_chrdev_region(aim_devno, 1);
-       return -EIO;
+       return err;
 }
 
 static void __exit mod_exit(void)