On Tue, 13 Feb 2024 at 15:50, Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> wrote: > > On Mon, 12 Feb 2024 at 23:55, Rob Clark <robdclark@xxxxxxxxx> wrote: > > > > From: Rob Clark <robdclark@xxxxxxxxxxxx> > > > > DRM_MODESET_LOCK_ALL_BEGIN() has a hidden trap-door (aka retry loop), > > which means we can't rely too much on variable initializers. > > > > Fixes: 6e455f5dcdd1 ("drm/crtc: fix uninitialized variable use") > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx> > > --- > > I have mixed feelings about DRM_MODESET_LOCK_ALL_BEGIN() (and friends) > > magic. On one hand it simplifies the deadlock/back dance. OTOH it > > conceals a nasty sharp edge. Maybe it is better to have the complicated > > restart path a bit more explicit, like it was originally. > > > > drivers/gpu/drm/drm_crtc.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > > index cb90e70d85e8..65f9f66933bb 100644 > > --- a/drivers/gpu/drm/drm_crtc.c > > +++ b/drivers/gpu/drm/drm_crtc.c > > @@ -904,6 +904,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, > > connector_set = NULL; > > fb = NULL; > > mode = NULL; > > + num_connectors = 0; > > Nit: I think we should move all this next to the > DRM_MODESET_LOCK_ALL_BEGIN() and drop initialisation from the prologue > of the function, but it's definitely a separate and more intrusive > story. > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> After running this through CI: Tested-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> #sc7180, sdm845 > > DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); > > > -- > With best wishes > Dmitry -- With best wishes Dmitry