fbdev: hyperv_fb: fix uninitialized local variable use
authorArnd Bergmann <arnd@arndb.de>
Wed, 8 Nov 2023 14:58:13 +0000 (15:58 +0100)
committerHelge Deller <deller@gmx.de>
Fri, 10 Nov 2023 06:34:19 +0000 (07:34 +0100)
When CONFIG_SYSFB is disabled, the hyperv_fb driver can now run into
undefined behavior on a gen2 VM, as indicated by this smatch warning:

drivers/video/fbdev/hyperv_fb.c:1077 hvfb_getmem() error: uninitialized symbol 'base'.
drivers/video/fbdev/hyperv_fb.c:1077 hvfb_getmem() error: uninitialized symbol 'size'.

Since there is no way to know the actual framebuffer in this configuration,
just return an allocation failure here, which should avoid the build
warning and the undefined behavior.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202311070802.YCpvehaz-lkp@intel.com/
Fixes: a07b50d80ab6 ("hyperv: avoid dependency on screen_info")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/hyperv_fb.c

index bf59daf862fc7184fe7194ffdbfa26c96334e512..a80939fe2ee6d1b1ea09f3e14122f0546fbfefa4 100644 (file)
@@ -1013,6 +1013,8 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
        } else if (IS_ENABLED(CONFIG_SYSFB)) {
                base = screen_info.lfb_base;
                size = screen_info.lfb_size;
+       } else {
+               goto err1;
        }
 
        /*