Message ID | 1491380967-28570-4-git-send-email-jeffy.chen@rock-chips.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05.04.2017 10:29, Jeffy Chen wrote: > Normally we do this in drm_mode_config_cleanup. But analogix dp's > connector is allocated in bind, and freed after unbind. So we need > to destroy it in unbind to avoid further access. > > Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> One comment below > --- > > Changes in v3: None > Changes in v2: None > > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > index 7b75f82..a96fd55 100644 > --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c > @@ -1439,6 +1439,7 @@ void analogix_dp_unbind(struct device *dev, struct device *master, > struct analogix_dp_device *dp = dev_get_drvdata(dev); > > analogix_dp_bridge_disable(dp->bridge); Not related to the patch, but what about bridge, above it is only disabled, but not detached, encoder cleanup code should do it but it is also missing. Regards Andrzej > + dp->connector.funcs->destroy(&dp->connector); > > if (dp->plat_data->panel) { > if (drm_panel_unprepare(dp->plat_data->panel))
Hi Andrzej, On 04/06/2017 03:19 PM, Andrzej Hajda wrote: > On 05.04.2017 10:29, Jeffy Chen wrote: >> Normally we do this in drm_mode_config_cleanup. But analogix dp's >> connector is allocated in bind, and freed after unbind. So we need >> to destroy it in unbind to avoid further access. >> >> Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> > > Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> > > One comment below > >> --- >> >> Changes in v3: None >> Changes in v2: None >> >> drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c >> index 7b75f82..a96fd55 100644 >> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c >> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c >> @@ -1439,6 +1439,7 @@ void analogix_dp_unbind(struct device *dev, struct device *master, >> struct analogix_dp_device *dp = dev_get_drvdata(dev); >> >> analogix_dp_bridge_disable(dp->bridge); > > Not related to the patch, but what about bridge, above it is only > disabled, but not detached, encoder cleanup code should do it but it is > also missing. right, i should notice there's a drm_encoder_cleanup(dp->encoder) when failed to create bridge...thanx for pointing that out :) > > Regards > Andrzej > >> + dp->connector.funcs->destroy(&dp->connector); >> >> if (dp->plat_data->panel) { >> if (drm_panel_unprepare(dp->plat_data->panel)) > > > > >
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 7b75f82..a96fd55 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1439,6 +1439,7 @@ void analogix_dp_unbind(struct device *dev, struct device *master, struct analogix_dp_device *dp = dev_get_drvdata(dev); analogix_dp_bridge_disable(dp->bridge); + dp->connector.funcs->destroy(&dp->connector); if (dp->plat_data->panel) { if (drm_panel_unprepare(dp->plat_data->panel))
Normally we do this in drm_mode_config_cleanup. But analogix dp's connector is allocated in bind, and freed after unbind. So we need to destroy it in unbind to avoid further access. Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v3: None Changes in v2: None drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 1 + 1 file changed, 1 insertion(+)