aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2015-11-23 08:44:13 -0500
committerLee Jones <lee.jones@linaro.org>2016-01-11 00:56:12 -0500
commit86c68e2fb3eeb87ef716a0d61c5a346e9aee2ecb (patch)
treec356db3958377c49ef83c175c8eb697d49105da5
parent1ec218373b8ebda821aec00bb156a9c94fad9cd4 (diff)
backlight: adp88x0: Fix uninitialized variable use
gcc correctly warns about both the adp8860 and adp8870 backlight drivers using an uninitialized variable in their error handling path: drivers/video/backlight/adp8870_bl.c: In function 'adp8870_bl_ambient_light_zone_store': drivers/video/backlight/adp8870_bl.c:811:11: warning: 'reg_val' may be used uninitialized in this function This changes the code to only write back the data if it was correctly read to start with. As a side-note, the drivers are mostly identical, so I think they should really be merged into one file to avoid having to fix every bug twice. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r--drivers/video/backlight/adp8860_bl.c10
-rw-r--r--drivers/video/backlight/adp8870_bl.c10
2 files changed, 12 insertions, 8 deletions
diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c
index 98ffe71e8af2..f0d4c0324580 100644
--- a/drivers/video/backlight/adp8860_bl.c
+++ b/drivers/video/backlight/adp8860_bl.c
@@ -621,10 +621,12 @@ static ssize_t adp8860_bl_ambient_light_zone_store(struct device *dev,
621 621
622 /* Set user supplied ambient light zone */ 622 /* Set user supplied ambient light zone */
623 mutex_lock(&data->lock); 623 mutex_lock(&data->lock);
624 adp8860_read(data->client, ADP8860_CFGR, &reg_val); 624 ret = adp8860_read(data->client, ADP8860_CFGR, &reg_val);
625 reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT); 625 if (!ret) {
626 reg_val |= (val - 1) << CFGR_BLV_SHIFT; 626 reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
627 adp8860_write(data->client, ADP8860_CFGR, reg_val); 627 reg_val |= (val - 1) << CFGR_BLV_SHIFT;
628 adp8860_write(data->client, ADP8860_CFGR, reg_val);
629 }
628 mutex_unlock(&data->lock); 630 mutex_unlock(&data->lock);
629 } 631 }
630 632
diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c
index 9d738352d7d4..21acac90fd77 100644
--- a/drivers/video/backlight/adp8870_bl.c
+++ b/drivers/video/backlight/adp8870_bl.c
@@ -807,10 +807,12 @@ static ssize_t adp8870_bl_ambient_light_zone_store(struct device *dev,
807 807
808 /* Set user supplied ambient light zone */ 808 /* Set user supplied ambient light zone */
809 mutex_lock(&data->lock); 809 mutex_lock(&data->lock);
810 adp8870_read(data->client, ADP8870_CFGR, &reg_val); 810 ret = adp8870_read(data->client, ADP8870_CFGR, &reg_val);
811 reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT); 811 if (!ret) {
812 reg_val |= (val - 1) << CFGR_BLV_SHIFT; 812 reg_val &= ~(CFGR_BLV_MASK << CFGR_BLV_SHIFT);
813 adp8870_write(data->client, ADP8870_CFGR, reg_val); 813 reg_val |= (val - 1) << CFGR_BLV_SHIFT;
814 adp8870_write(data->client, ADP8870_CFGR, reg_val);
815 }
814 mutex_unlock(&data->lock); 816 mutex_unlock(&data->lock);
815 } 817 }
816 818