The size of cr_data->bak is CURSOR_SIZE/4, however the access size in the is CURSOR_SIZE in the loop. It causes the out-of-bounds access. Signed-off-by: Wenjia Zhao <driverfuzzing@xxxxxxxxx> --- drivers/video/fbdev/via/viafbdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/fbdev/via/viafbdev.c b/drivers/video/fbdev/via/viafbdev.c index 22deb34..ef217cc 100644 --- a/drivers/video/fbdev/via/viafbdev.c +++ b/drivers/video/fbdev/via/viafbdev.c @@ -839,7 +839,7 @@ static int viafb_cursor(struct fb_info *info, struct fb_cursor *cursor) if (cursor->set & FB_CUR_SETSHAPE) { struct { u8 data[CURSOR_SIZE]; - u32 bak[CURSOR_SIZE / 4]; + u32 bak[CURSOR_SIZE]; } *cr_data = kzalloc(sizeof(*cr_data), GFP_ATOMIC); int size = ((cursor->image.width + 7) >> 3) * cursor->image.height; -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel