On Thu, 7 Dec 2023 at 15:50, Maxime Ripard <mripard@xxxxxxxxxx> wrote: > > Even though we were rolling our own custom state for the vc4 HDMI > controller driver, we were still using the generic helper to destroy > that state. > > It was mostly working since the underlying state is the first member of > our state so the pointers are probably equal in all relevant cases, but > it's still fragile so let's fix this properly. > > Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx> Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_hdmi.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c > index 25c9c71256d3..f05e2c95a60d 100644 > --- a/drivers/gpu/drm/vc4/vc4_hdmi.c > +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c > @@ -672,11 +672,21 @@ vc4_hdmi_connector_duplicate_state(struct drm_connector *connector) > return &new_state->base; > } > > +static void vc4_hdmi_connector_destroy_state(struct drm_connector *connector, > + struct drm_connector_state *state) > +{ > + struct vc4_hdmi_connector_state *vc4_state = > + conn_state_to_vc4_hdmi_conn_state(state); > + > + __drm_atomic_helper_connector_destroy_state(state); > + kfree(vc4_state); > +} > + > static const struct drm_connector_funcs vc4_hdmi_connector_funcs = { > .fill_modes = drm_helper_probe_single_connector_modes, > .reset = vc4_hdmi_connector_reset, > .atomic_duplicate_state = vc4_hdmi_connector_duplicate_state, > - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > + .atomic_destroy_state = vc4_hdmi_connector_destroy_state, > .atomic_get_property = vc4_hdmi_connector_get_property, > .atomic_set_property = vc4_hdmi_connector_set_property, > }; > > -- > 2.43.0 >