| From dc25ab067645eabd037f1a23d49a666f9e0b8c68 Mon Sep 17 00:00:00 2001 |
| From: Sam Bobroff <sbobroff@linux.ibm.com> |
| Date: Mon, 5 Nov 2018 16:57:47 +1100 |
| Subject: drm/ast: Fix incorrect free on ioregs |
| |
| From: Sam Bobroff <sbobroff@linux.ibm.com> |
| |
| commit dc25ab067645eabd037f1a23d49a666f9e0b8c68 upstream. |
| |
| If the platform has no IO space, ioregs is placed next to the already |
| allocated regs. In this case, it should not be separately freed. |
| |
| This prevents a kernel warning from __vunmap "Trying to vfree() |
| nonexistent vm area" when unloading the driver. |
| |
| Fixes: 0dd68309b9c5 ("drm/ast: Try to use MMIO registers when PIO isn't supported") |
| |
| Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/ast/ast_main.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/ast/ast_main.c |
| +++ b/drivers/gpu/drm/ast/ast_main.c |
| @@ -489,7 +489,8 @@ int ast_driver_unload(struct drm_device |
| drm_mode_config_cleanup(dev); |
| |
| ast_mm_fini(ast); |
| - pci_iounmap(dev->pdev, ast->ioregs); |
| + if (ast->ioregs != ast->regs + AST_IO_MM_OFFSET) |
| + pci_iounmap(dev->pdev, ast->ioregs); |
| pci_iounmap(dev->pdev, ast->regs); |
| kfree(ast); |
| return 0; |