This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: vivid: don't set HDMI TX controls if there are no HDMI outputs
Author:  Hans Verkuil <hverkuil-ci...@xs4all.nl>
Date:    Mon Jun 24 12:52:59 2024 +0300

When setting the EDID it would attempt to update two controls
that are only present if there is an HDMI output configured.

If there isn't any (e.g. when the vivid module is loaded with
node_types=1), then calling VIDIOC_S_EDID would crash.

Fix this by first checking if outputs are present.

Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 drivers/media/test-drivers/vivid/vivid-vid-cap.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

---

diff --git a/drivers/media/test-drivers/vivid/vivid-vid-cap.c 
b/drivers/media/test-drivers/vivid/vivid-vid-cap.c
index 3a3041a0378f..afa0dc5bcdae 100644
--- a/drivers/media/test-drivers/vivid/vivid-vid-cap.c
+++ b/drivers/media/test-drivers/vivid/vivid-vid-cap.c
@@ -1554,8 +1554,10 @@ int vidioc_s_edid(struct file *file, void *_fh,
                return -EINVAL;
        if (edid->blocks == 0) {
                dev->edid_blocks = 0;
-               v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, 0);
-               v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, 0);
+               if (dev->num_outputs) {
+                       v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, 0);
+                       v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, 0);
+               }
                phys_addr = CEC_PHYS_ADDR_INVALID;
                goto set_phys_addr;
        }
@@ -1579,8 +1581,10 @@ int vidioc_s_edid(struct file *file, void *_fh,
                        display_present |=
                                dev->display_present[i] << j++;
 
-       v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, display_present);
-       v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, display_present);
+       if (dev->num_outputs) {
+               v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, display_present);
+               v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, display_present);
+       }
 
 set_phys_addr:
        /* TODO: a proper hotplug detect cycle should be emulated here */

Reply via email to