Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] media: cec: missing CEC_EVENT_FL_STATE_EDID_PRESENT in cec_open() --
commit 46a7f75b89b8be5b867c7e7aadb50668719e461a Author: Hans Verkuil <[email protected]> media: cec: core: implement CEC_EVENT_FL_STATE_EDID_PRESENT This commit sets CEC_EVENT_FL_STATE_EDID_PRESENT on CEC_EVENT_STATE_CHANGE events in cec_post_state_event() when CEC_LOG_ADDRS_FL_EDID_PRESENT is set in adap->log_addrs.flags. > diff --git a/drivers/media/cec/core/cec-adap.c > b/drivers/media/cec/core/cec-adap.c > index 06a596a0ede3e..c0de5835fea01 100644 > --- a/drivers/media/cec/core/cec-adap.c > +++ b/drivers/media/cec/core/cec-adap.c > @@ -323,6 +323,8 @@ static void cec_post_state_event(struct cec_adapter *adap) > ev.state_change.log_addr_mask = adap->log_addrs.log_addr_mask; > ev.state_change.have_conn_info = > adap->conn_info.type != CEC_CONNECTOR_TYPE_NO_CONNECTOR; > + if (adap->log_addrs.flags & CEC_LOG_ADDRS_FL_EDID_PRESENT) > + ev.flags |= CEC_EVENT_FL_STATE_EDID_PRESENT; > cec_queue_event(adap, &ev); > } [Severity: Medium] Should the initial CEC_EVENT_STATE_CHANGE event queued in cec_open() also set CEC_EVENT_FL_STATE_EDID_PRESENT when an EDID is already present? In drivers/media/cec/core/cec-api.c, cec_open() constructs the initial state event directly: drivers/media/cec/core/cec-api.c:cec_open() { struct cec_event ev = { .event = CEC_EVENT_STATE_CHANGE, .flags = CEC_EVENT_FL_INITIAL_STATE, }; ... /* Queue up initial state events */ ev.state_change.phys_addr = adap->phys_addr; ev.state_change.log_addr_mask = adap->log_addrs.log_addr_mask; ev.state_change.have_conn_info = adap->conn_info.type != CEC_CONNECTOR_TYPE_NO_CONNECTOR; cec_queue_event_fh(fh, &ev, 0); } When userspace opens a CEC device node while adap->log_addrs.flags has CEC_LOG_ADDRS_FL_EDID_PRESENT set and dequeues the initial state event via CEC_DQEVENT, ev.flags will be missing CEC_EVENT_FL_STATE_EDID_PRESENT. Also note that under CONFIG_CEC_PIN, cec_open() reuses the same ev variable to queue initial CEC_EVENT_PIN_HPD_HIGH/LOW and CEC_EVENT_PIN_5V_HIGH/LOW events, so if CEC_EVENT_FL_STATE_EDID_PRESENT is set on ev.flags for the initial state change event, it would need to be cleared before queueing the pin events. -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=12
