From mboxrd@z Thu Jan 1 00:00:00 1970 From: Claude Code Review Bot To: dri-devel-reviews@example.com Subject: Claude review: drm/msm/dp: remove cached drm_edid from panel Date: Sun, 12 Apr 2026 10:16:11 +1000 Message-ID: In-Reply-To: <20260410-msm-dp-mst-v4-1-b20518dea8de@oss.qualcomm.com> References: <20260410-msm-dp-mst-v4-0-b20518dea8de@oss.qualcomm.com> <20260410-msm-dp-mst-v4-1-b20518dea8de@oss.qualcomm.com> X-Mailer: Claude Code Patch Reviewer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Patch Review This patch moves EDID reading from `msm_dp_panel_read_sink_caps()` into `msm_dp_display_process_hpd_high()` and removes the cached `drm_edid` field from the panel struct. **Memory leak**: The old code properly freed the EDID: ```c - drm_edid_free(msm_dp_panel->drm_edid); - msm_dp_panel->drm_edid = drm_edid_read_ddc(connector, &panel->aux->ddc); - drm_edid_connector_update(connector, msm_dp_panel->drm_edid); ``` The new code reads the EDID into a local variable but never frees it: ```c + drm_edid = drm_edid_read_ddc(connector, &dp->aux->ddc); + drm_edid_connector_update(connector, drm_edid); + + if (!drm_edid) { + DRM_ERROR("panel edid read failed\n"); ``` The `drm_edid` pointer returned by `drm_edid_read_ddc()` is allocated and must be freed with `drm_edid_free()` after `drm_edid_connector_update()` takes its own reference. This leaks on every hotplug. Also, the old `msm_dp_panel_unplugged()` which called `drm_edid_connector_update(connector, NULL)` and `drm_edid_free()` was removed. The connector should still be cleared on unplug. --- Generated by Claude Code Patch Reviewer