diff options
author | Eric Anholt <eric@anholt.net> | 2008-10-17 18:03:53 (GMT) |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2008-10-23 03:42:27 (GMT) |
commit | 35ad68c18148a18938ff4f40e945c9734e7d2265 (patch) | |
tree | 012e373dd3f252f5e6b015ca3eea461826f58b27 /drivers/gpu/drm/drm_irq.c | |
parent | 786225eb2f4e55b5dda3cf8c62a145e824aae199 (diff) | |
download | linux-fsl-qoriq-35ad68c18148a18938ff4f40e945c9734e7d2265.tar.xz |
drm: Remove two leaks of vblank reference count in error paths.
If the failing paths were hit, the vblank IRQ would never get turned off
again.
Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/drm_irq.c')
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 4091b9e..212a94f7 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -594,11 +594,14 @@ int drm_wait_vblank(struct drm_device *dev, void *data, goto done; } + /* Get a refcount on the vblank, which will be released by + * drm_vbl_send_signals(). + */ ret = drm_vblank_get(dev, crtc); if (ret) { drm_free(vbl_sig, sizeof(struct drm_vbl_sig), DRM_MEM_DRIVER); - return ret; + goto done; } atomic_inc(&dev->vbl_signal_pending); |