Claude review: drm/msm/dp: remove cached drm_edid from panel

Claude Code Review Bot
2026-04-12T00:16:11Z

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