On Wed, Mar 27, 2013 at 05:44:56PM +0200, Andy Shevchenko wrote:
> The mapping as follows:
>       E_RANGE         -> ERANGE
>       E_UNDEF         -> ENODATA
>       E_TOOLONG       -> E2BIG
> 
> Signed-off-by: Andy Shevchenko <[email protected]>
> ---
>  drivers/staging/speakup/kobjects.c    |  4 ++--
>  drivers/staging/speakup/speakup.h     |  3 ---
>  drivers/staging/speakup/varhandlers.c | 12 ++++++------
>  3 files changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/staging/speakup/kobjects.c 
> b/drivers/staging/speakup/kobjects.c
> index d0f660b..04bf8e8 100644
> --- a/drivers/staging/speakup/kobjects.c
> +++ b/drivers/staging/speakup/kobjects.c
> @@ -619,7 +619,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct 
> kobj_attribute *attr,
>                       len = E_SET;
>               value = simple_strtol(cp, NULL, 10);
>               ret = spk_set_num_var(value, param, len);
> -             if (ret == E_RANGE) {
> +             if (ret == -ERANGE) {
>                       var_data = param->data;
>                       pr_warn("value for %s out of range, expect %d to %d\n",
>                               attr->attr.name,
> @@ -637,7 +637,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct 
> kobj_attribute *attr,
>               cp = (char *) buf;
>               cp[len] = '\0';
>               ret = spk_set_string_var(buf, param, len);
> -             if (ret == E_TOOLONG)
> +             if (ret == -E2BIG)
>                       pr_warn("value too long for %s\n",
>                                       attr->attr.name);
>               break;
> diff --git a/drivers/staging/speakup/speakup.h 
> b/drivers/staging/speakup/speakup.h
> index 1e5691c..4c67c73 100644
> --- a/drivers/staging/speakup/speakup.h
> +++ b/drivers/staging/speakup/speakup.h
> @@ -45,9 +45,6 @@
>  #define IS_TYPE(x, type) ((spk_chartab[((u_char)x)]&type) == type)
>  
>  #define SET_DEFAULT -4
> -#define E_RANGE -3
> -#define E_TOOLONG -2
> -#define E_UNDEF -1
>  
>  extern int speakup_thread(void *data);
>  extern void spk_reset_default_chars(void);
> diff --git a/drivers/staging/speakup/varhandlers.c 
> b/drivers/staging/speakup/varhandlers.c
> index 0a237da..fb479a5 100644
> --- a/drivers/staging/speakup/varhandlers.c
> +++ b/drivers/staging/speakup/varhandlers.c
> @@ -249,9 +249,9 @@ int spk_set_string_var(const char *page, struct 
> st_var_header *var, int len)
>       int ret = 0;
>       struct var_t *var_data = var->data;
>       if (var_data == NULL)
> -             return E_UNDEF;
> +             return -ENODATA;
>       if (len > MAXVARLEN)
> -             return -E_TOOLONG;
> +             return -E2BIG;

This would be better as -EINVAL.

Also this is a bug fix because the original code returned a positive
value and then checked for a negative.  The caller just spams
/var/log/message and returns success which isn't right either.

Ah staging code...

regards,
dan carpenter

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to