]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/virtio: Handle drm_crtc_init_with_planes() errors
authorAlexandr Sapozhnikov <alsp705@gmail.com>
Mon, 22 Sep 2025 14:44:13 +0000 (17:44 +0300)
committerDmitry Osipenko <dmitry.osipenko@collabora.com>
Thu, 9 Oct 2025 03:04:01 +0000 (06:04 +0300)
Return value of function drm_crtc_init_with_planes(),
called by vgdev_output_init(), is not checked,
but it is usually checked for this function.

Found by Linux Verification Center (linuxtesting.org) with SVACE.
Signed-off-by: Alexandr Sapozhnikov <alsp705@gmail.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
[dmitry.osipenko@collabora.com: coding style fix, edit commit message]
Link: https://lore.kernel.org/r/20250922144418.41-1-alsp705@gmail.com
drivers/gpu/drm/virtio/virtgpu_display.c

index c3315935d8bc467fbaf57cb26363223526d43ed0..4b1252c04b7ade6d1f185d230484bfefa72e2d1d 100644 (file)
@@ -257,6 +257,7 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
        struct drm_encoder *encoder = &output->enc;
        struct drm_crtc *crtc = &output->crtc;
        struct drm_plane *primary, *cursor;
+       int ret;
 
        output->index = index;
        if (index == 0) {
@@ -271,8 +272,10 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)
        cursor = virtio_gpu_plane_init(vgdev, DRM_PLANE_TYPE_CURSOR, index);
        if (IS_ERR(cursor))
                return PTR_ERR(cursor);
-       drm_crtc_init_with_planes(dev, crtc, primary, cursor,
-                                 &virtio_gpu_crtc_funcs, NULL);
+       ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
+                                       &virtio_gpu_crtc_funcs, NULL);
+       if (ret)
+               return ret;
        drm_crtc_helper_add(crtc, &virtio_gpu_crtc_helper_funcs);
 
        drm_connector_init(dev, connector, &virtio_gpu_connector_funcs,