diff options
| -rw-r--r-- | drivers/gpu/drm/drm_irq.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 120a16fe15c2..f7c8b758059f 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
| @@ -877,6 +877,7 @@ u32 drm_vblank_count(struct drm_device *dev, int crtc) | |||
| 877 | 877 | ||
| 878 | if (WARN_ON(crtc >= dev->num_crtcs)) | 878 | if (WARN_ON(crtc >= dev->num_crtcs)) |
| 879 | return 0; | 879 | return 0; |
| 880 | |||
| 880 | return vblank->count; | 881 | return vblank->count; |
| 881 | } | 882 | } |
| 882 | EXPORT_SYMBOL(drm_vblank_count); | 883 | EXPORT_SYMBOL(drm_vblank_count); |
| @@ -1110,10 +1111,10 @@ void drm_vblank_put(struct drm_device *dev, int crtc) | |||
| 1110 | { | 1111 | { |
| 1111 | struct drm_vblank_crtc *vblank = &dev->vblank[crtc]; | 1112 | struct drm_vblank_crtc *vblank = &dev->vblank[crtc]; |
| 1112 | 1113 | ||
| 1113 | if (WARN_ON(atomic_read(&vblank->refcount) == 0)) | 1114 | if (WARN_ON(crtc >= dev->num_crtcs)) |
| 1114 | return; | 1115 | return; |
| 1115 | 1116 | ||
| 1116 | if (WARN_ON(crtc >= dev->num_crtcs)) | 1117 | if (WARN_ON(atomic_read(&vblank->refcount) == 0)) |
| 1117 | return; | 1118 | return; |
| 1118 | 1119 | ||
| 1119 | /* Last user schedules interrupt disable */ | 1120 | /* Last user schedules interrupt disable */ |
| @@ -1158,6 +1159,9 @@ void drm_wait_one_vblank(struct drm_device *dev, int crtc) | |||
| 1158 | int ret; | 1159 | int ret; |
| 1159 | u32 last; | 1160 | u32 last; |
| 1160 | 1161 | ||
| 1162 | if (WARN_ON(crtc >= dev->num_crtcs)) | ||
| 1163 | return; | ||
| 1164 | |||
| 1161 | ret = drm_vblank_get(dev, crtc); | 1165 | ret = drm_vblank_get(dev, crtc); |
| 1162 | if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", crtc, ret)) | 1166 | if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", crtc, ret)) |
| 1163 | return; | 1167 | return; |
| @@ -1428,6 +1432,9 @@ void drm_vblank_post_modeset(struct drm_device *dev, int crtc) | |||
| 1428 | if (!dev->num_crtcs) | 1432 | if (!dev->num_crtcs) |
| 1429 | return; | 1433 | return; |
| 1430 | 1434 | ||
| 1435 | if (WARN_ON(crtc >= dev->num_crtcs)) | ||
| 1436 | return; | ||
| 1437 | |||
| 1431 | if (vblank->inmodeset) { | 1438 | if (vblank->inmodeset) { |
| 1432 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | 1439 | spin_lock_irqsave(&dev->vbl_lock, irqflags); |
| 1433 | dev->vblank_disable_allowed = true; | 1440 | dev->vblank_disable_allowed = true; |
