On 2017/12/7 17:03, Arnd Bergmann wrote: > On Thu, Dec 7, 2017 at 9:16 AM, Xiongfeng Wang > <wangxiongfe...@huawei.com> wrote: >> gcc prints the following warning: >> drivers/auxdisplay/img-ascii-lcd.c: In function ‘malta_update’: >> drivers/auxdisplay/img-ascii-lcd.c:109: warning: ‘err’ may be usedun >> initialized in this function >> drivers/auxdisplay/img-ascii-lcd.c: In function ‘sead3_update’: >> drivers/auxdisplay/img-ascii-lcd.c:207: warning: ‘err’ may be used >> uninitialized in this function >> >> When ctx->cfg->num_chars is zero, there will be a false error info >> printed. Fix this by recontruct the code and initializing the variable >> 'err' to zero. >> >> Signed-off-by: Xiongfeng Wang <wangxiongfe...@huawei.com> > > I wonder how you ran into this. I'm not seeing that warning on my machine, > and I thought I had fixed all '-Wmaybe-uninitialized' warnings. Before you > send it to the maintainer, I'd try to figure out what the difference is > between > our setups. Sorry, I forget the designate the 'ARCH' I used. So it's x86 compiler that prints these warnings. ARM64 compiler won't report these kind of warnings.
Since 'num_chars'is guaranteed to be a positive number, this is not a real bug. Please just ignore this patch. Thanks, Xiongfeng Wang > > Do you get other -Wmaybe-uninitialized warnings in the same build, or is this > the only one? > >> drivers/auxdisplay/img-ascii-lcd.c | 23 +++++++++++------------ >> 1 file changed, 11 insertions(+), 12 deletions(-) >> >> diff --git a/drivers/auxdisplay/img-ascii-lcd.c >> b/drivers/auxdisplay/img-ascii-lcd.c >> index db040b3..15048c1 100644 >> --- a/drivers/auxdisplay/img-ascii-lcd.c >> +++ b/drivers/auxdisplay/img-ascii-lcd.c >> @@ -102,12 +102,11 @@ static void malta_update(struct img_ascii_lcd_ctx *ctx) >> for (i = 0; i < ctx->cfg->num_chars; i++) { >> err = regmap_write(ctx->regmap, >> ctx->offset + (i * 8), ctx->curr[i]); >> - if (err) >> - break; >> + if (err) { >> + pr_err_ratelimited("Failed to update LCD display: >> %d\n", err); >> + return; >> + } >> } >> - >> - if (unlikely(err)) >> - pr_err_ratelimited("Failed to update LCD display: %d\n", >> err); >> } > > This part looks good. > >> static struct img_ascii_lcd_config malta_config = { >> @@ -180,32 +179,32 @@ static int sead3_wait_lcd_idle(struct >> img_ascii_lcd_ctx *ctx) >> static void sead3_update(struct img_ascii_lcd_ctx *ctx) >> { >> unsigned int i; >> - int err; >> + int err = 0; >> >> for (i = 0; i < ctx->cfg->num_chars; i++) { >> err = sead3_wait_lcd_idle(ctx); >> if (err) >> - break; >> + goto out_err; >> >> err = regmap_write(ctx->regmap, >> ctx->offset + SEAD3_REG_LCD_CTRL, >> SEAD3_REG_LCD_CTRL_SETDRAM | i); >> if (err) >> - break; >> + goto out_err; >> >> err = sead3_wait_lcd_idle(ctx); >> if (err) >> - break; >> + goto out_err; >> >> err = regmap_write(ctx->regmap, >> ctx->offset + SEAD3_REG_LCD_DATA, >> ctx->curr[i]); >> if (err) >> - break; >> + goto out_err; >> } >> >> - if (unlikely(err)) >> - pr_err_ratelimited("Failed to update LCD display: %d\n", >> err); >> +out_err: >> + pr_err_ratelimited("Failed to update LCD display: %d\n", err); >> } > > I think you forgot a 'return' statement befor ethe label here. > > Arnd > > . > _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-dev