video/sis/: fix negative array index
PATCH 1/1 video/sis/: fix negative array index
This patch fixes the possible usage of a negative value as an array index spotted by the Coverity checker.
---
drivers/video/sis/sis_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
9f63bf8c543710521e885b09d88271d1a308b158
drivers/video/sis/sis_main.c +2 -1
@@ -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 ; }if (isactive) {
Quoted 30 lines · On Sat, 27 Oct 2007 16:19:46 +0200 Adrian Bunk <[email protected]> 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 <[email protected]>---
drivers/video/sis/sis_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
9f63bf8c543710521e885b09d88271d1a308b158drivers/video/sis/sis_main.c +0
-1@@ -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);
drivers/video/sis/sis_main.c sisfb_do_set_var(struct fb_var_screeninfo *var, int isactive, struct fb_info *in · line 1267
Quoted 10 lines
drivers/video/sis/sis_main.c +2
-0ivideo->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.
Quoted 12 lines · On Sat, 27 Oct 2007 16:19:46 +0200 Adrian Bunk <[email protected]> wrote:
drivers/video/sis/sis_main.c +0
-1@@ -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 ;
drivers/video/sis/sis_main.c sisfb_do_set_var(struct fb_var_screeninfo *var, int isactive, struct fb_info *in · line 1262
Quoted 10 lines
drivers/video/sis/sis_main.c +1
-0}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];
oic, sisfb_validate_mode() could have returned a -ve error code.
Please use the changelog to fully explain your patches.