diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2011-07-03 22:52:27 -0400 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2011-11-09 17:57:55 -0500 |
| commit | bde4889aaa2d59c1febfeadd7f690be0ed143ed5 (patch) | |
| tree | 2a7a3d175bb1995040eea6b6e5b14ff736d970de /drivers/gpu | |
| parent | 1ea6b8f48918282bdca0b32a34095504ee65bab5 (diff) | |
drm: make sure drm_vblank_init() has been called before touching vbl_lock
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/drm_irq.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index cb3794a00f98..4d3760c63964 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
| @@ -407,13 +407,16 @@ int drm_irq_uninstall(struct drm_device *dev) | |||
| 407 | /* | 407 | /* |
| 408 | * Wake up any waiters so they don't hang. | 408 | * Wake up any waiters so they don't hang. |
| 409 | */ | 409 | */ |
| 410 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | 410 | if (dev->num_crtcs) { |
| 411 | for (i = 0; i < dev->num_crtcs; i++) { | 411 | spin_lock_irqsave(&dev->vbl_lock, irqflags); |
| 412 | DRM_WAKEUP(&dev->vbl_queue[i]); | 412 | for (i = 0; i < dev->num_crtcs; i++) { |
| 413 | dev->vblank_enabled[i] = 0; | 413 | DRM_WAKEUP(&dev->vbl_queue[i]); |
| 414 | dev->last_vblank[i] = dev->driver->get_vblank_counter(dev, i); | 414 | dev->vblank_enabled[i] = 0; |
| 415 | dev->last_vblank[i] = | ||
| 416 | dev->driver->get_vblank_counter(dev, i); | ||
| 417 | } | ||
| 418 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
| 415 | } | 419 | } |
| 416 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
| 417 | 420 | ||
| 418 | if (!irq_enabled) | 421 | if (!irq_enabled) |
| 419 | return -EINVAL; | 422 | return -EINVAL; |
