diff mbox series

drm/vgem: validate vgem_device before exit operations

Message ID 20200917142145.ipcxb2zo4up357t2@smtp.gmail.com
State New, archived
Headers show
Series drm/vgem: validate vgem_device before exit operations | expand

Commit Message

Melissa Wen Sept. 17, 2020, 2:21 p.m. UTC
This patch adds a check for the vgem_device before handling it.

Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
---
 drivers/gpu/drm/vgem/vgem_drv.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Daniel Vetter Sept. 17, 2020, 2:30 p.m. UTC | #1
On Thu, Sep 17, 2020 at 4:21 PM Melissa Wen <melissa.srw@gmail.com> wrote:
>
> This patch adds a check for the vgem_device before handling it.
>
> Signed-off-by: Melissa Wen <melissa.srw@gmail.com>

Seems reasonable. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/vgem/vgem_drv.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
> index cb884c890065..119ca887cb8a 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -472,7 +472,14 @@ static int __init vgem_init(void)
>
>  static void __exit vgem_exit(void)
>  {
> -       struct platform_device *pdev = vgem_device->platform;
> +       struct platform_device *pdev;
> +
> +       if (!vgem_device) {
> +               DRM_INFO("vgem_device is NULL\n");
> +               return;
> +       }
> +
> +       pdev = vgem_device->platform;
>
>         drm_dev_unregister(&vgem_device->drm);
>         devres_release_group(&pdev->dev, NULL);
> --
> 2.28.0
>
Ruhl, Michael J Sept. 17, 2020, 2:39 p.m. UTC | #2
>-----Original Message-----
>From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
>Melissa Wen
>Sent: Thursday, September 17, 2020 10:22 AM
>To: Daniel Vetter <daniel@ffwll.ch>; David Airlie <airlied@linux.ie>
>Cc: dri-devel@lists.freedesktop.org
>Subject: [PATCH] drm/vgem: validate vgem_device before exit operations
>
>This patch adds a check for the vgem_device before handling it.
>
>Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
>---
> drivers/gpu/drm/vgem/vgem_drv.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/gpu/drm/vgem/vgem_drv.c
>b/drivers/gpu/drm/vgem/vgem_drv.c
>index cb884c890065..119ca887cb8a 100644
>--- a/drivers/gpu/drm/vgem/vgem_drv.c
>+++ b/drivers/gpu/drm/vgem/vgem_drv.c
>@@ -472,7 +472,14 @@ static int __init vgem_init(void)
>
> static void __exit vgem_exit(void)
> {
>-	struct platform_device *pdev = vgem_device->platform;
>+	struct platform_device *pdev;
>+
>+	if (!vgem_device) {
>+		DRM_INFO("vgem_device is NULL\n");
>+		return;
>+	}

This only gets called on module_exit.

If module_init fails, (which is where this is allocated), will the exit ever
be called?

M


>+
>+	pdev = vgem_device->platform;
>
> 	drm_dev_unregister(&vgem_device->drm);
> 	devres_release_group(&pdev->dev, NULL);
>--
>2.28.0
>
>_______________________________________________
>dri-devel mailing list
>dri-devel@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index cb884c890065..119ca887cb8a 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -472,7 +472,14 @@  static int __init vgem_init(void)
 
 static void __exit vgem_exit(void)
 {
-	struct platform_device *pdev = vgem_device->platform;
+	struct platform_device *pdev;
+
+	if (!vgem_device) {
+		DRM_INFO("vgem_device is NULL\n");
+		return;
+	}
+
+	pdev = vgem_device->platform;
 
 	drm_dev_unregister(&vgem_device->drm);
 	devres_release_group(&pdev->dev, NULL);