All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raghavendra D Prabhu <rprabhu@wnohang.net>
To: Richard Purdie <rpurdie@rpsys.net>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 2/2] FIX: Check the return value before proceeding
Date: Sat, 16 Apr 2011 14:14:17 +0530	[thread overview]
Message-ID: <20110416084417.GA27829@Xye> (raw)
In-Reply-To: <20110416083730.GA5114@Xye>

In case of failure from lp5521_read, an uninitialized mode is passed to lp5521_write.
This adds checks to prevent that.

Signed-off-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
---
  drivers/leds/leds-lp5521.c |   40 ++++++++++++++++++++++------------------
  1 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c
index 6c5eac0..f03a524 100644
--- a/drivers/leds/leds-lp5521.c
+++ b/drivers/leds/leds-lp5521.c
@@ -176,7 +176,7 @@ static int lp5521_set_engine_mode(struct lp5521_engine *engine, u8 mode)
  
  	ret = lp5521_read(client, LP5521_REG_OP_MODE, &engine_state);
  
-	if (ret == 0){
+	if (!ret){
  	/* set mode only for this engine */
  		engine_state &= ~(engine->engine_mask);
  		mode &= engine->engine_mask;
@@ -192,6 +192,7 @@ static int lp5521_load_program(struct lp5521_engine *eng, const u8 *pattern)
  	struct lp5521_chip *chip = engine_to_lp5521(eng);
  	struct i2c_client *client = chip->client;
  	int ret;
+	int ret_read;
  	int addr;
  	u8 mode;
  
@@ -199,23 +200,26 @@ static int lp5521_load_program(struct lp5521_engine *eng, const u8 *pattern)
  	ret = lp5521_set_engine_mode(eng, LP5521_CMD_DIRECT);
  	/* 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);
-
-	/* For loading, all the engines to load mode */
-	lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT);
-	/* Mode change requires min 500 us delay. 1 - 2 ms  with margin */
-	usleep_range(1000, 2000);
-	lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_LOAD);
-	/* Mode change requires min 500 us delay. 1 - 2 ms  with margin */
-	usleep_range(1000, 2000);
-
-	addr = LP5521_PROG_MEM_BASE + eng->prog_page * LP5521_PROG_MEM_SIZE;
-	i2c_smbus_write_i2c_block_data(client,
-				addr,
-				LP5521_PROG_MEM_SIZE,
-				pattern);
-
-	ret |= lp5521_write(client, LP5521_REG_OP_MODE, mode);
+	ret_read = lp5521_read(client, LP5521_REG_OP_MODE, &mode);
+	ret |= ret_read;
+
+	if (!ret_read){
+		/* For loading, all the engines to load mode */
+		lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_DIRECT);
+		/* Mode change requires min 500 us delay. 1 - 2 ms  with margin */
+		usleep_range(1000, 2000);
+		lp5521_write(client, LP5521_REG_OP_MODE, LP5521_CMD_LOAD);
+		/* Mode change requires min 500 us delay. 1 - 2 ms  with margin */
+		usleep_range(1000, 2000);
+
+		addr = LP5521_PROG_MEM_BASE + eng->prog_page * LP5521_PROG_MEM_SIZE;
+		i2c_smbus_write_i2c_block_data(client,
+					addr,
+					LP5521_PROG_MEM_SIZE,
+					pattern);
+
+		ret |= lp5521_write(client, LP5521_REG_OP_MODE, mode);
+	}
  	return ret;
  }
  
-- 
1.7.4.4

--------------------------
Raghavendra Prabhu
GPG Id : D72BE977
Fingerprint: B93F EBCB 8E05 7039 CD3C A4B8 A616 DCA1 D72B E977


      parent reply	other threads:[~2011-04-16  8:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-16  8:37 [PATCH] Fix for unintialized variables Raghavendra D Prabhu
2011-04-16  8:43 ` [PATCH 1/2] FIX: engine_state is uninitialized Raghavendra D Prabhu
2011-04-18 11:21   ` Jonathan Neuschäfer
2011-04-16  8:44 ` Raghavendra D Prabhu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110416084417.GA27829@Xye \
    --to=rprabhu@wnohang.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rpurdie@rpsys.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.