On Mon, Apr 07, 2014 at 06:45:55PM +0400, Alexander Shiyan wrote: > Fri, 14 Mar 2014 15:32:41 +0100 от Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>: > > We have dev_add_param_enum() now, so use it for the mode_name > > setting. Also drop the special case for single mode framebuffers, > > just add the mode_name parameter for this case aswell. > > > > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > > --- > ... > > +static int fb_setup_mode(struct fb_info *info) > > +{ > > + struct device_d *dev = &info->dev; > > + int ret; > ... > > - ret = info->fbops->fb_activate_var(info); > > + if (info->fbops->fb_activate_var) { > > + ret = info->fbops->fb_activate_var(info); > > + if (ret) > > + return ret; > > + } > > So, "ret" is unitialized without fb_activate_var(). > It is wrong since this variable is used in code below. Damn. I remember times when compilers used to warn on unitialized variables :( The following should fix this. Thanks for reporting. Sascha --------------------8<-------------------------------- >From 7b8779541f86bbc6f6b461f1ea1c2f4310bb8335 Mon Sep 17 00:00:00 2001 From: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Date: Tue, 8 Apr 2014 08:37:09 +0200 Subject: [PATCH] fb: Fix use of unitialized variable 'ret' is only initialized when info->fbops->fb_activate_var exists, so only use it in this case. Reported-by: Alexander Shiyan <shc_work@xxxxxxx> Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/video/fb.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/video/fb.c b/drivers/video/fb.c index 2c8b8eb..ecf6142 100644 --- a/drivers/video/fb.c +++ b/drivers/video/fb.c @@ -85,8 +85,10 @@ static int fb_setup_mode(struct fb_info *info) if (info->fbops->fb_activate_var) { ret = info->fbops->fb_activate_var(info); - if (ret) + if (ret) { + info->cdev.size = 0; return ret; + } } if (!info->line_length) @@ -94,14 +96,11 @@ static int fb_setup_mode(struct fb_info *info) if (!info->screen_size) info->screen_size = info->line_length * info->yres; - if (!ret) { - dev->resource[0].start = (resource_size_t)info->screen_base; - info->cdev.size = info->line_length * info->yres; - dev->resource[0].end = dev->resource[0].start + info->cdev.size - 1; - } else - info->cdev.size = 0; + dev->resource[0].start = (resource_size_t)info->screen_base; + info->cdev.size = info->line_length * info->yres; + dev->resource[0].end = dev->resource[0].start + info->cdev.size - 1; - return ret; + return 0; } static int fb_set_modename(struct param_d *param, void *priv) -- 1.9.1 -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox