diff mbox

[v2,2/2] asus-laptop: correct error handling in sysfs_acpi_set

Message ID 1460764917-1042-2-git-send-email-giedrius.statkevicius@gmail.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Giedrius Statkevi?ius April 16, 2016, 12:01 a.m. UTC
Properly return rv back to the caller in the case of an error in
parse_arg. In the process remove a unused variable 'out'.

Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com>
---
 drivers/platform/x86/asus-laptop.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Darren Hart April 20, 2016, 8:19 p.m. UTC | #1
On Sat, Apr 16, 2016 at 03:01:57AM +0300, Giedrius Statkevi?ius wrote:
> Properly return rv back to the caller in the case of an error in
> parse_arg. In the process remove a unused variable 'out'.

The initial problem if I recall was value being uninitialized. Is that correct?

> 
> Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com>
> ---
>  drivers/platform/x86/asus-laptop.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
> index d86d42e..9a69734 100644
> --- a/drivers/platform/x86/asus-laptop.c
> +++ b/drivers/platform/x86/asus-laptop.c
> @@ -946,11 +946,10 @@ static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
>  			      const char *method)
>  {
>  	int rv, value;
> -	int out = 0;
>  
>  	rv = parse_arg(buf, count, &value);
> -	if (rv > 0)
> -		out = value ? 1 : 0;
> +	if (rv <= 0)
> +		return rv;
>  
>  	if (write_acpi_int(asus->handle, method, value))
>  		return -ENODEV;
> -- 
> 2.8.0
> 
>
Giedrius Statkevi?ius April 21, 2016, 6:35 a.m. UTC | #2
On Wed, Apr 20, 2016 at 01:19:55PM -0700, Darren Hart wrote:
> On Sat, Apr 16, 2016 at 03:01:57AM +0300, Giedrius Statkevi?ius wrote:
> > Properly return rv back to the caller in the case of an error in
> > parse_arg. In the process remove a unused variable 'out'.
> 
> The initial problem if I recall was value being uninitialized. Is that correct?
No, 'out' was just removed as it was unused. Then you caught the issue with
error handling in this function so I've updated this patch to fix that as well.
--
To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andy Shevchenko April 21, 2016, 8:34 p.m. UTC | #3
On Sat, Apr 16, 2016 at 3:01 AM, Giedrius Statkevi?ius
<giedrius.statkevicius@gmail.com> wrote:
> Properly return rv back to the caller in the case of an error in
> parse_arg. In the process remove a unused variable 'out'.
>
> Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com>
> ---
>  drivers/platform/x86/asus-laptop.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
> index d86d42e..9a69734 100644
> --- a/drivers/platform/x86/asus-laptop.c
> +++ b/drivers/platform/x86/asus-laptop.c
> @@ -946,11 +946,10 @@ static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
>                               const char *method)
>  {
>         int rv, value;
> -       int out = 0;
>
>         rv = parse_arg(buf, count, &value);

Just noticed (might be a separate patch for this) that parse_arg
pretty much duplicated kstrotint().

> -       if (rv > 0)
> -               out = value ? 1 : 0;
> +       if (rv <= 0)
> +               return rv;
>
>         if (write_acpi_int(asus->handle, method, value))
>                 return -ENODEV;
> --
> 2.8.0
>
Darren Hart April 21, 2016, 8:59 p.m. UTC | #4
On Thu, Apr 21, 2016 at 11:34:13PM +0300, Andy Shevchenko wrote:
> On Sat, Apr 16, 2016 at 3:01 AM, Giedrius Statkevi?ius
> <giedrius.statkevicius@gmail.com> wrote:
> > Properly return rv back to the caller in the case of an error in
> > parse_arg. In the process remove a unused variable 'out'.
> >
> > Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com>
> > ---
> >  drivers/platform/x86/asus-laptop.c | 5 ++---
> >  1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
> > index d86d42e..9a69734 100644
> > --- a/drivers/platform/x86/asus-laptop.c
> > +++ b/drivers/platform/x86/asus-laptop.c
> > @@ -946,11 +946,10 @@ static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
> >                               const char *method)
> >  {
> >         int rv, value;
> > -       int out = 0;
> >
> >         rv = parse_arg(buf, count, &value);
> 
> Just noticed (might be a separate patch for this) that parse_arg
> pretty much duplicated kstrotint().

Ah, thanks Andy.

I'd like to take this one as is, but a cleanup for that would be welcome indeed.
Darren Hart April 25, 2016, 5:47 p.m. UTC | #5
On Sat, Apr 16, 2016 at 03:01:57AM +0300, Giedrius Statkevi?ius wrote:
> Properly return rv back to the caller in the case of an error in
> parse_arg. In the process remove a unused variable 'out'.
> 
> Signed-off-by: Giedrius Statkevi?ius <giedrius.statkevicius@gmail.com>

1 and 2 queued for 4.7.

> ---
>  drivers/platform/x86/asus-laptop.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
> index d86d42e..9a69734 100644
> --- a/drivers/platform/x86/asus-laptop.c
> +++ b/drivers/platform/x86/asus-laptop.c
> @@ -946,11 +946,10 @@ static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
>  			      const char *method)
>  {
>  	int rv, value;
> -	int out = 0;
>  
>  	rv = parse_arg(buf, count, &value);
> -	if (rv > 0)
> -		out = value ? 1 : 0;
> +	if (rv <= 0)
> +		return rv;
>  
>  	if (write_acpi_int(asus->handle, method, value))
>  		return -ENODEV;
> -- 
> 2.8.0
> 
>
diff mbox

Patch

diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index d86d42e..9a69734 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -946,11 +946,10 @@  static ssize_t sysfs_acpi_set(struct asus_laptop *asus,
 			      const char *method)
 {
 	int rv, value;
-	int out = 0;
 
 	rv = parse_arg(buf, count, &value);
-	if (rv > 0)
-		out = value ? 1 : 0;
+	if (rv <= 0)
+		return rv;
 
 	if (write_acpi_int(asus->handle, method, value))
 		return -ENODEV;