Message ID | 1428047129-26835-1-git-send-email-tt.rantala@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 03, 2015 at 10:45:29AM +0300, Tommi Rantala wrote: > Regression in commit 2caa80e72b57c6216aec6f6a11fcfb4fec46daa0 > Author: Daniel Vetter <daniel.vetter@ffwll.ch> > Date: Sun Feb 22 11:38:36 2015 +0100 > > drm: Fix deadlock due to getconnector locking changes > > If the drm_connector_find() call returns NULL, we should no longer > call drm_modeset_unlock() to avoid locking imbalance. > > Signed-off-by: Tommi Rantala <tt.rantala@gmail.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Oops, thanks for catching this. If this missed 4.0 then we need to backport it. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > drivers/gpu/drm/drm_crtc.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 679b10e..b6f076b 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -2121,7 +2121,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, > connector = drm_connector_find(dev, out_resp->connector_id); > if (!connector) { > ret = -ENOENT; > - goto out; > + goto out_unlock; > } > > for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) > @@ -2201,6 +2201,8 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, > > out: > drm_modeset_unlock(&dev->mode_config.connection_mutex); > + > +out_unlock: > mutex_unlock(&dev->mode_config.mutex); > > return ret; > -- > 2.1.0 >
On Tue, 07 Apr 2015, Daniel Vetter <daniel@ffwll.ch> wrote: > On Fri, Apr 03, 2015 at 10:45:29AM +0300, Tommi Rantala wrote: >> Regression in commit 2caa80e72b57c6216aec6f6a11fcfb4fec46daa0 >> Author: Daniel Vetter <daniel.vetter@ffwll.ch> >> Date: Sun Feb 22 11:38:36 2015 +0100 >> >> drm: Fix deadlock due to getconnector locking changes >> >> If the drm_connector_find() call returns NULL, we should no longer >> call drm_modeset_unlock() to avoid locking imbalance. >> >> Signed-off-by: Tommi Rantala <tt.rantala@gmail.com> >> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Oops, thanks for catching this. If this missed 4.0 then we need to > backport it. > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Pushed to topic/drm-fixes, should still make it to 4.0. Thanks for the patch and review. BR, Jani. > >> --- >> drivers/gpu/drm/drm_crtc.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c >> index 679b10e..b6f076b 100644 >> --- a/drivers/gpu/drm/drm_crtc.c >> +++ b/drivers/gpu/drm/drm_crtc.c >> @@ -2121,7 +2121,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, >> connector = drm_connector_find(dev, out_resp->connector_id); >> if (!connector) { >> ret = -ENOENT; >> - goto out; >> + goto out_unlock; >> } >> >> for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) >> @@ -2201,6 +2201,8 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, >> >> out: >> drm_modeset_unlock(&dev->mode_config.connection_mutex); >> + >> +out_unlock: >> mutex_unlock(&dev->mode_config.mutex); >> >> return ret; >> -- >> 2.1.0 >> > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 679b10e..b6f076b 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -2121,7 +2121,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, connector = drm_connector_find(dev, out_resp->connector_id); if (!connector) { ret = -ENOENT; - goto out; + goto out_unlock; } for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) @@ -2201,6 +2201,8 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, out: drm_modeset_unlock(&dev->mode_config.connection_mutex); + +out_unlock: mutex_unlock(&dev->mode_config.mutex); return ret;
Regression in commit 2caa80e72b57c6216aec6f6a11fcfb4fec46daa0 Author: Daniel Vetter <daniel.vetter@ffwll.ch> Date: Sun Feb 22 11:38:36 2015 +0100 drm: Fix deadlock due to getconnector locking changes If the drm_connector_find() call returns NULL, we should no longer call drm_modeset_unlock() to avoid locking imbalance. Signed-off-by: Tommi Rantala <tt.rantala@gmail.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/drm_crtc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)