Inorder to notify the user that value is not successfuly set in sys
entry, error should be returned from store function instead of count

Signed-off-by: Saurabh Sengar <saurabh.tr...@gmail.com>
---
v2:
Hi Dan,
I will look more into this function in my free time.
For now just sending you this patch fixing ERANGE as commented
 drivers/staging/speakup/kobjects.c | 4 +++-
 drivers/staging/staging.c          | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/speakup/kobjects.c 
b/drivers/staging/speakup/kobjects.c
index fdfeb42..509163c 100644
--- a/drivers/staging/speakup/kobjects.c
+++ b/drivers/staging/speakup/kobjects.c
@@ -640,7 +640,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct 
kobj_attribute *attr,
                        len = E_INC;
                else
                        len = E_SET;
-               if (kstrtol(cp, 10, &value) == 0)
+               if (!kstrtol(cp, 10, &value))
                        ret = spk_set_num_var(value, param, len);
                else
                        pr_warn("overflow or parsing error has occurred");
@@ -688,6 +688,8 @@ ssize_t spk_var_store(struct kobject *kobj, struct 
kobj_attribute *attr,
 
        if (ret == -ERESTART)
                pr_info("%s reset to default value\n", param->name);
+       else if (ret < 0)
+               return ret;
        return count;
 }
 EXPORT_SYMBOL_GPL(spk_var_store);
diff --git a/drivers/staging/staging.c b/drivers/staging/staging.c
index 233e589..36dd594 100644
--- a/drivers/staging/staging.c
+++ b/drivers/staging/staging.c
@@ -2,12 +2,12 @@
 #include <linux/init.h>
 #include <linux/module.h>
 
-static int __init staging_init(void)
+static int staging_init(void)
 {
        return 0;
 }
 
-static void __exit staging_exit(void)
+static void staging_exit(void)
 {
 }
 
-- 
1.9.1

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

Reply via email to