Re: [2.6 patch] video/sis/: fix negative array index

From: Andrew Morton
Date: Thu Nov 01 2007 - 18:17:38 EST


On Sat, 27 Oct 2007 16:19:46 +0200
Adrian Bunk <bunk@xxxxxxxxxx> wrote:

> This patch fixes the possible usage of a negative value as an array
> index spotted by the Coverity checker.
>
> Signed-off-by: Adrian Bunk <bunk@xxxxxxxxxx>
>
> ---
>
> drivers/video/sis/sis_main.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> 9f63bf8c543710521e885b09d88271d1a308b158
> diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
> index bc7d236..37bd24b 100644
> --- a/drivers/video/sis/sis_main.c
> +++ b/drivers/video/sis/sis_main.c
> @@ -1245,24 +1245,25 @@ sisfb_do_set_var(struct fb_var_screeninfo *var, int isactive, struct fb_info *in
> ivideo->sisfb_mode_idx++;
> }
>
> if(found_mode) {
> ivideo->sisfb_mode_idx = sisfb_validate_mode(ivideo,
> ivideo->sisfb_mode_idx, ivideo->currentvbflags);
> - ivideo->mode_no = sisbios_mode[ivideo->sisfb_mode_idx].mode_no[ivideo->mni];
> } else {
> ivideo->sisfb_mode_idx = -1;
> }
>
> if(ivideo->sisfb_mode_idx < 0) {
> printk(KERN_ERR "sisfb: Mode %dx%dx%d not supported\n", var->xres,
> var->yres, var->bits_per_pixel);
> ivideo->sisfb_mode_idx = old_mode;
> return -EINVAL;
> }
>
> + ivideo->mode_no = sisbios_mode[ivideo->sisfb_mode_idx].mode_no[ivideo->mni];
> +
> if(sisfb_search_refresh_rate(ivideo, ivideo->refresh_rate, ivideo->sisfb_mode_idx) == 0) {
> ivideo->rate_idx = sisbios_mode[ivideo->sisfb_mode_idx].rate_idx;
> ivideo->refresh_rate = 60;
> }

Well I spent a little time trying to work out what the actual bug is and
gave up. There doesn't appear to be any error in sisfb_do_set_var().

Better changelogs, please.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/