mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
staging: xgifb: prevent video RAM size exceeding PCI window size
Add a sanity check for the video RAM size. It should fit into the PCI window. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a09f347c6c
commit
6b2a7e0c9b
@ -1700,6 +1700,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
|
||||
struct fb_info *fb_info;
|
||||
struct xgifb_video_info *xgifb_info;
|
||||
struct xgi_hw_device_info *hw_info;
|
||||
unsigned long video_size_max;
|
||||
|
||||
fb_info = framebuffer_alloc(sizeof(*xgifb_info), &pdev->dev);
|
||||
if (!fb_info)
|
||||
@ -1720,6 +1721,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
|
||||
xgifb_info->subsysvendor = pdev->subsystem_vendor;
|
||||
xgifb_info->subsysdevice = pdev->subsystem_device;
|
||||
|
||||
video_size_max = pci_resource_len(pdev, 0);
|
||||
xgifb_info->video_base = pci_resource_start(pdev, 0);
|
||||
xgifb_info->mmio_base = pci_resource_start(pdev, 1);
|
||||
xgifb_info->mmio_size = pci_resource_len(pdev, 1);
|
||||
@ -1780,6 +1782,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
|
||||
"Fatal error: Unable to determine RAM size.\n");
|
||||
ret = -ENODEV;
|
||||
goto error_disable;
|
||||
} else if (xgifb_info->video_size > video_size_max) {
|
||||
xgifb_info->video_size = video_size_max;
|
||||
}
|
||||
|
||||
/* Enable PCI_LINEAR_ADDRESSING and MMIO_ENABLE */
|
||||
|
Loading…
x
Reference in New Issue
Block a user