vgdev_output_init() ignores errors from drm_encoder_init(), so output
setup continues even when encoder initialization fails, for example
because of an allocation failure.

Check the return value and propagate the error to the caller.

Assisted-by: LLM
Signed-off-by: Sebastian von Arx <[email protected]>
---
 drivers/gpu/drm/virtio/virtgpu_display.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c 
b/drivers/gpu/drm/virtio/virtgpu_display.c
index b01178027..1c790d6a6 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -310,7 +310,11 @@ static int vgdev_output_init(struct virtio_gpu_device 
*vgdev, int index)
        if (vgdev->has_edid)
                drm_connector_attach_edid_property(connector);
 
-       drm_encoder_init(dev, encoder, &virtio_gpu_encoder_funcs, 
DRM_MODE_ENCODER_VIRTUAL, NULL);
+       ret = drm_encoder_init(dev, encoder, &virtio_gpu_encoder_funcs,
+                              DRM_MODE_ENCODER_VIRTUAL, NULL);
+       if (ret)
+               return ret;
+
        drm_encoder_helper_add(encoder, &virtio_gpu_enc_helper_funcs);
        encoder->possible_crtcs = 1 << index;
 
-- 
2.55.0

Reply via email to