This patch is needed to have the module report appropriate error codes.

Signed-off-by: Christian Gromm <christian.gr...@microchip.com>
---
 drivers/staging/most/aim-cdev/cdev.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/staging/most/aim-cdev/cdev.c 
b/drivers/staging/most/aim-cdev/cdev.c
index de4f76a..20e2839 100644
--- a/drivers/staging/most/aim-cdev/cdev.c
+++ b/drivers/staging/most/aim-cdev/cdev.c
@@ -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)
-- 
1.9.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to