]> www.infradead.org Git - linux.git/commitdiff
drm/client: fix null pointer dereference in drm_client_modeset_probe
authorMa Ke <make24@iscas.ac.cn>
Fri, 2 Aug 2024 04:47:36 +0000 (12:47 +0800)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 2 Aug 2024 07:23:54 +0000 (09:23 +0200)
In drm_client_modeset_probe(), the return value of drm_mode_duplicate() is
assigned to modeset->mode, which will lead to a possible NULL pointer
dereference on failure of drm_mode_duplicate(). Add a check to avoid npd.

Cc: stable@vger.kernel.org
Fixes: cf13909aee05 ("drm/fb-helper: Move out modeset config code")
Signed-off-by: Ma Ke <make24@iscas.ac.cn>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240802044736.1570345-1-make24@iscas.ac.cn
drivers/gpu/drm/drm_client_modeset.c

index 31af5cf37a099810f282e7c18ef3da940132105e..cee5eafbfb81a8bbc12cbdce0d6f29022f513e89 100644 (file)
@@ -880,6 +880,11 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
 
                        kfree(modeset->mode);
                        modeset->mode = drm_mode_duplicate(dev, mode);
+                       if (!modeset->mode) {
+                               ret = -ENOMEM;
+                               break;
+                       }
+
                        drm_connector_get(connector);
                        modeset->connectors[modeset->num_connectors++] = connector;
                        modeset->x = offset->x;