[PATCH 2/2] drm/client: Fix memory leak in drm_client_modeset_probe
Thomas Zimmermann
tzimmermann at suse.de
Tue Jul 11 09:43:31 UTC 2023
Am 11.07.23 um 11:20 schrieb Jocelyn Falempe:
> When a new mode is set to modeset->mode, the previous mode should be freed.
> This fixes the following kmemleak report:
>
> drm_mode_duplicate+0x45/0x220 [drm]
> drm_client_modeset_probe+0x944/0xf50 [drm]
> __drm_fb_helper_initial_config_and_unlock+0xb4/0x2c0 [drm_kms_helper]
> drm_fbdev_client_hotplug+0x2bc/0x4d0 [drm_kms_helper]
> drm_client_register+0x169/0x240 [drm]
> ast_pci_probe+0x142/0x190 [ast]
> local_pci_probe+0xdc/0x180
> work_for_cpu_fn+0x4e/0xa0
> process_one_work+0x8b7/0x1540
> worker_thread+0x70a/0xed0
> kthread+0x29f/0x340
> ret_from_fork+0x1f/0x30
>
> cc: <stable at vger.kernel.org>
> Reported-by: Zhang Yi <yizhan at redhat.com>
> Signed-off-by: Jocelyn Falempe <jfalempe at redhat.com>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index a4a62aa99984..5d4703b4648a 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -867,6 +867,9 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
> break;
> }
>
> + if (modeset->mode)
> + kfree(modeset->mode);
kfree() does a NULL-pointer test. So it can be removed here. With that
changed:
Reviewed-by: Thomas Zimmermann <tzimmermann at suse.de>
> +
> modeset->mode = drm_mode_duplicate(dev, mode);
> drm_connector_get(connector);
> modeset->connectors[modeset->num_connectors++] = connector;
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230711/2edc9d3e/attachment.sig>
More information about the dri-devel
mailing list