patch "video: hgafb: fix potential NULL pointer dereference" added to char-misc-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
video: hgafb: fix potential NULL pointer dereference
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From dc13cac4862cc68ec74348a80b6942532b7735fa Mon Sep 17 00:00:00 2001
From: Igor Matheus Andrade Torrente <[email protected]>
Date: Mon, 3 May 2021 13:57:06 +0200
Subject: video: hgafb: fix potential NULL pointer dereference
The return of ioremap if not checked, and can lead to a NULL to be assigned to hga_vram. Potentially leading to a NULL pointer dereference.
The fix adds code to deal with this case in the error label and changes how the hgafb_probe handles the return of hga_card_detect.
--- drivers/video/fbdev/hgafb.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-)
drivers/video/fbdev/hgafb.c +13 -8
@@ -285,6 +285,8 @@ static int hga_card_detect(void) hga_vram_len =0x08000 ; hga_vram =ioremap (0xb0000 , hga_vram_len); +if (!hga_vram) +return -ENOMEM ;if (request_region (0x3b0 ,12 ,"hgafb" )) release_io_ports =1 ;
@@ -344,13 +346,18 @@ static int hga_card_detect(void) hga_type_name ="Hercules" ;break ; } -return 1 ; +return 0 ; error:if (release_io_ports)release_region (0x3b0 ,12 );if (release_io_port)release_region (0x3bf ,1 ); -return 0 ; + +iounmap (hga_vram); + +pr_err ("hgafb: HGA card not detected.\n" ); + +return -EINVAL ; }/**
@@ -548,13 +555,11 @@ static const struct fb_ops hgafb_ops = {static int hgafb_probe (struct platform_device *pdev) {struct fb_info *info; +int ret; -if (!hga_card_detect ()) { -printk (KERN_INFO "hgafb: HGA card not detected.\n" ); -if (hga_vram) -iounmap (hga_vram); -return -EINVAL ; - } + ret =hga_card_detect (); +if (!ret) +return ret;printk (KERN_INFO "hgafb: %s with %ldK of memory detected.\n" , hga_type_name, hga_vram_len/1024 );
Signature · 1 line
2.31.1