Skip to contentSkip to conversation

leds: leds-lp5521: Avoid writing uninitialized value to LP5521_REG_OP_MODE register

PATCH In review Axel Lin 2 participants 2 messages Oct 5, 2011 LED

lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 leds: leds-lp5521: Avoid writing uninitialized value to LP5521_REG_OP_MODE register

If lp5521_read fails, engine_state variable is not initialized. If lp5521_read fails, we should return error.
This patch fixes below warning.

CC drivers/leds/leds-lp5521.o
drivers/leds/leds-lp5521.c: In function 'lp5521_set_engine_mode':
drivers/leds/leds-lp5521.c:168: warning: 'engine_state' may be used uninitialized in this function

---
 drivers/leds/leds-lp5521.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
drivers/leds/leds-lp5521.c +2 -0
index 9fc122c..89134d9 100644
@@ -175,6 +175,8 @@ static int lp5521_set_engine_mode(struct lp5521_engine *engine, u8 mode)
 		mode = LP5521_CMD_DIRECT;
 
 	ret = lp5521_read(client, LP5521_REG_OP_MODE, &engine_state);
+	if (ret < 0)
+		return ret;
 
 	/* set mode only for this engine */
 	engine_state &= ~(engine->engine_mask);
Signature · 1 line
1.7.4.1
#1 lore raw
Quoted 18 lines · On Wed, 05 Oct 2011 17:19:38 +0800 Axel Lin <[email protected]> wrote:

If lp5521_read fails, engine_state variable is not initialized. If lp5521_read fails, we should return error.
This patch fixes below warning.

CC drivers/leds/leds-lp5521.o
drivers/leds/leds-lp5521.c: In function 'lp5521_set_engine_mode':
drivers/leds/leds-lp5521.c:168: warning: 'engine_state' may be used uninitialized in this function

---
 drivers/leds/leds-lp5521.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
drivers/leds/leds-lp5521.c +0 -0
index 9fc122c..89134d9 100644

drivers/leds/leds-lp5521.c static int lp5521_set_engine_mode(struct lp5521_engine *engine, u8 mode) · line 182

Quoted 8 lines
drivers/leds/leds-lp5521.c +2 -0
@@ -175,6 +175,8 @@ static int lp5521_set_engine_mode(struct lp5521_engine *engine, u8 mode)
 		mode = LP5521_CMD_DIRECT;
 
 	ret = lp5521_read(client, LP5521_REG_OP_MODE, &engine_state);
+	if (ret < 0)
+		return ret;
 
 	/* set mode only for this engine */
 	engine_state &= ~(engine->engine_mask);

OK. And the later "ret |=" whcih was previously a bug is now just unneeded.

drivers/leds/leds-lp5521.c renamed from drivers/leds/leds-lp5521.c~leds-leds-lp5521-avoid-writing-uninitialized-value-to-lp5521_reg_op_mode-register-fix +1 -3
@@ -182,9 +182,7 @@ static int lp5521_set_engine_mode(struct
 	engine_state &= ~(engine->engine_mask);
 	mode &= engine->engine_mask;
 	engine_state |= mode;
-	ret |= lp5521_write(client, LP5521_REG_OP_MODE, engine_state);
-
-	return ret;
+	return lp5521_write(client, LP5521_REG_OP_MODE, engine_state);
 }
 
 static int lp5521_load_program(struct lp5521_engine *eng, const u8 *pattern)

_