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 <driverfuzz...@gmail.com>
---
 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

Reply via email to