video: hgafb: correctly handle card detect failure during probe

Started by Anirudh Rayabharam on May 16, 2021 · 4 messages from 3 authors · Last reply May 20, 2021

Subsystems (2)

Maintainers (2)

STALE2000d LANDED

Status: Landed in mainline as 02625c965239 on 2021-05-21.

open the first message on its own page

Message details and related content
The return value of hga_card_detect() is not properly handled causing
the probe to succeed even though hga_card_detect() failed. Since probe
succeeds, hgafb_open() can be called which will end up operating on an
unmapped hga_vram. This results in an out-of-bounds access as reported
by kernel test robot [1].

To fix this, correctly detect failure of hga_card_detect() by checking
for a non-zero error code.

[1]: https://lore.kernel.org/lkml/20210516150019.GB25903@xsang-OptiPlex-9020/

Reported-by: kernel test robot <redacted>
Fixes: dc13cac4862c ("video: hgafb: fix potential NULL pointer dereference")
Cc: stable <redacted>
Signed-off-by: Anirudh Rayabharam <redacted>
---
 drivers/video/fbdev/hgafb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c
index cc8e62ae93f6..bd3d07aa4f0e 100644
--- a/drivers/video/fbdev/hgafb.c
+++ b/drivers/video/fbdev/hgafb.c
@@ -558,7 +558,7 @@ static int hgafb_probe(struct platform_device *pdev)
 	int ret;
 
 	ret = hga_card_detect();
-	if (!ret)
+	if (ret)
 		return ret;
 
 	printk(KERN_INFO "hgafb: %s with %ldK of memory detected.\n",
-- 
2.26.2
Message details and related content
Hi,

On 5/16/21 4:27 PM, Anirudh Rayabharam wrote:
quoted hunk
The return value of hga_card_detect() is not properly handled causing
the probe to succeed even though hga_card_detect() failed. Since probe
succeeds, hgafb_open() can be called which will end up operating on an
unmapped hga_vram. This results in an out-of-bounds access as reported
by kernel test robot [1].

To fix this, correctly detect failure of hga_card_detect() by checking
for a non-zero error code.

[1]: https://lore.kernel.org/lkml/20210516150019.GB25903@xsang-OptiPlex-9020/

Reported-by: kernel test robot <redacted>
Fixes: dc13cac4862c ("video: hgafb: fix potential NULL pointer dereference")
Cc: stable <redacted>
Signed-off-by: Anirudh Rayabharam <redacted>
---
  drivers/video/fbdev/hgafb.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c
index cc8e62ae93f6..bd3d07aa4f0e 100644
--- a/drivers/video/fbdev/hgafb.c
+++ b/drivers/video/fbdev/hgafb.c
@@ -558,7 +558,7 @@ static int hgafb_probe(struct platform_device *pdev)
  	int ret;
  
  	ret = hga_card_detect();
-	if (!ret)
+	if (ret)
  		return ret;
  
  	printk(KERN_INFO "hgafb: %s with %ldK of memory detected.\n",
In fact, this return isn't being properly handled. Thanks for fix it!

Reviewed-by: Igor Matheus Andrade Torrente <redacted>
Message details and related content
On Mon, May 17, 2021 at 12:57:14AM +0530, Anirudh Rayabharam wrote:
The return value of hga_card_detect() is not properly handled causing
the probe to succeed even though hga_card_detect() failed. Since probe
succeeds, hgafb_open() can be called which will end up operating on an
unmapped hga_vram. This results in an out-of-bounds access as reported
by kernel test robot [1].

To fix this, correctly detect failure of hga_card_detect() by checking
for a non-zero error code.

[1]: https://lore.kernel.org/lkml/20210516150019.GB25903@xsang-OptiPlex-9020/

Reported-by: kernel test robot <redacted>
Fixes: dc13cac4862c ("video: hgafb: fix potential NULL pointer dereference")
Greg, this is one of the UMN fixes we did. So, do you want to take this
patch into your tree?

thanks!

	- Anirudh.
quoted hunk
Cc: stable <redacted>
Signed-off-by: Anirudh Rayabharam <redacted>
---
 drivers/video/fbdev/hgafb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c
index cc8e62ae93f6..bd3d07aa4f0e 100644
--- a/drivers/video/fbdev/hgafb.c
+++ b/drivers/video/fbdev/hgafb.c
@@ -558,7 +558,7 @@ static int hgafb_probe(struct platform_device *pdev)
 	int ret;
 
 	ret = hga_card_detect();
-	if (!ret)
+	if (ret)
 		return ret;
 
 	printk(KERN_INFO "hgafb: %s with %ldK of memory detected.\n",
-- 
2.26.2
Message details and related content
On Thu, May 20, 2021 at 07:10:39PM +0530, Anirudh Rayabharam wrote:
On Mon, May 17, 2021 at 12:57:14AM +0530, Anirudh Rayabharam wrote:
quoted
The return value of hga_card_detect() is not properly handled causing
the probe to succeed even though hga_card_detect() failed. Since probe
succeeds, hgafb_open() can be called which will end up operating on an
unmapped hga_vram. This results in an out-of-bounds access as reported
by kernel test robot [1].

To fix this, correctly detect failure of hga_card_detect() by checking
for a non-zero error code.

[1]: https://lore.kernel.org/lkml/20210516150019.GB25903@xsang-OptiPlex-9020/

Reported-by: kernel test robot <redacted>
Fixes: dc13cac4862c ("video: hgafb: fix potential NULL pointer dereference")
Greg, this is one of the UMN fixes we did. So, do you want to take this
patch into your tree?
Yes, will queue it up in a few days after Linus takes the current pull
request I sent him for this.

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help