diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 4a9faea626db..18f802d674cd 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -1050,6 +1050,7 @@ int | |||
1050 | i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | 1050 | i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, |
1051 | struct drm_file *file) | 1051 | struct drm_file *file) |
1052 | { | 1052 | { |
1053 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1053 | struct drm_i915_gem_pwrite *args = data; | 1054 | struct drm_i915_gem_pwrite *args = data; |
1054 | struct drm_i915_gem_object *obj; | 1055 | struct drm_i915_gem_object *obj; |
1055 | int ret; | 1056 | int ret; |
@@ -1069,9 +1070,11 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | |||
1069 | return -EFAULT; | 1070 | return -EFAULT; |
1070 | } | 1071 | } |
1071 | 1072 | ||
1073 | intel_runtime_pm_get(dev_priv); | ||
1074 | |||
1072 | ret = i915_mutex_lock_interruptible(dev); | 1075 | ret = i915_mutex_lock_interruptible(dev); |
1073 | if (ret) | 1076 | if (ret) |
1074 | return ret; | 1077 | goto put_rpm; |
1075 | 1078 | ||
1076 | obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); | 1079 | obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); |
1077 | if (&obj->base == NULL) { | 1080 | if (&obj->base == NULL) { |
@@ -1123,6 +1126,9 @@ out: | |||
1123 | drm_gem_object_unreference(&obj->base); | 1126 | drm_gem_object_unreference(&obj->base); |
1124 | unlock: | 1127 | unlock: |
1125 | mutex_unlock(&dev->struct_mutex); | 1128 | mutex_unlock(&dev->struct_mutex); |
1129 | put_rpm: | ||
1130 | intel_runtime_pm_put(dev_priv); | ||
1131 | |||
1126 | return ret; | 1132 | return ret; |
1127 | } | 1133 | } |
1128 | 1134 | ||