This is a note to let you know that I've just added the patch titled

    drivers/leds/leds-lp5521.c: fix lp5521_read() error handling

to the 3.4-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drivers-leds-leds-lp5521.c-fix-lp5521_read-error-handling.patch
and it can be found in the queue-3.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 5bc9ad774c063f6b41965e7314f2c26aa5e465a0 Mon Sep 17 00:00:00 2001
From: Dan Carpenter <[email protected]>
Date: Tue, 29 May 2012 15:07:26 -0700
Subject: drivers/leds/leds-lp5521.c: fix lp5521_read() error handling

From: Dan Carpenter <[email protected]>

commit 5bc9ad774c063f6b41965e7314f2c26aa5e465a0 upstream.

Gcc 4.6.2 complains that:

  drivers/leds/leds-lp5521.c: In function `lp5521_load_program':
  drivers/leds/leds-lp5521.c:214:21: warning: `mode' may be used uninitialized 
in this function [-Wuninitialized]
  drivers/leds/leds-lp5521.c: In function `lp5521_probe':
  drivers/leds/leds-lp5521.c:788:5: warning: `buf' may be used uninitialized in 
this function [-Wuninitialized]
  drivers/leds/leds-lp5521.c:740:6: warning: `ret' may be used uninitialized in 
this function [-Wuninitialized]

These are real problems if lp5521_read() returns an error.  When that
happens we should handle it, instead of ignoring it or doing a bitwise
OR with all the other error codes and continuing.

Signed-off-by: Dan Carpenter <[email protected]>
Cc: Milo <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Bryan Wu <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/leds/leds-lp5521.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

--- a/drivers/leds/leds-lp5521.c
+++ b/drivers/leds/leds-lp5521.c
@@ -193,9 +193,14 @@ static int lp5521_load_program(struct lp
 
        /* move current engine to direct mode and remember the state */
        ret = lp5521_set_engine_mode(eng, LP5521_CMD_DIRECT);
+       if (ret)
+               return ret;
+
        /* Mode change requires min 500 us delay. 1 - 2 ms  with margin */
        usleep_range(1000, 2000);
-       ret |= lp5521_read(client, LP5521_REG_OP_MODE, &mode);
+       ret = lp5521_read(client, LP5521_REG_OP_MODE, &mode);
+       if (ret)
+               return ret;
 
        /* For loading, all the engines to load mode */
        lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT);
@@ -211,8 +216,7 @@ static int lp5521_load_program(struct lp
                                LP5521_PROG_MEM_SIZE,
                                pattern);
 
-       ret |= lp5521_write(client, LP5521_REG_OP_MODE, mode);
-       return ret;
+       return lp5521_write(client, LP5521_REG_OP_MODE, mode);
 }
 
 static int lp5521_set_led_current(struct lp5521_chip *chip, int led, u8 curr)
@@ -785,7 +789,7 @@ static int __devinit lp5521_probe(struct
         * LP5521_REG_ENABLE register will not have any effect - strange!
         */
        ret = lp5521_read(client, LP5521_REG_R_CURRENT, &buf);
-       if (buf != LP5521_REG_R_CURR_DEFAULT) {
+       if (ret || buf != LP5521_REG_R_CURR_DEFAULT) {
                dev_err(&client->dev, "error in resetting chip\n");
                goto fail2;
        }


Patches currently in stable-queue which might be from [email protected] 
are

queue-3.4/drivers-leds-leds-lp5521.c-fix-lp5521_read-error-handling.patch
queue-3.4/mvsas-remove-unused-variable-in-mvs_task_exec.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to