diff options
Diffstat (limited to 'drivers/gpu/drm/drm_stub.c')
-rw-r--r-- | drivers/gpu/drm/drm_stub.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c index adb864dfef3..2c1b52847e9 100644 --- a/drivers/gpu/drm/drm_stub.c +++ b/drivers/gpu/drm/drm_stub.c | |||
@@ -174,6 +174,8 @@ void drm_master_put(struct drm_master **master) | |||
174 | int drm_setmaster_ioctl(struct drm_device *dev, void *data, | 174 | int drm_setmaster_ioctl(struct drm_device *dev, void *data, |
175 | struct drm_file *file_priv) | 175 | struct drm_file *file_priv) |
176 | { | 176 | { |
177 | int ret = 0; | ||
178 | |||
177 | if (file_priv->is_master) | 179 | if (file_priv->is_master) |
178 | return 0; | 180 | return 0; |
179 | 181 | ||
@@ -188,6 +190,13 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data, | |||
188 | mutex_lock(&dev->struct_mutex); | 190 | mutex_lock(&dev->struct_mutex); |
189 | file_priv->minor->master = drm_master_get(file_priv->master); | 191 | file_priv->minor->master = drm_master_get(file_priv->master); |
190 | file_priv->is_master = 1; | 192 | file_priv->is_master = 1; |
193 | if (dev->driver->master_set) { | ||
194 | ret = dev->driver->master_set(dev, file_priv, false); | ||
195 | if (unlikely(ret != 0)) { | ||
196 | file_priv->is_master = 0; | ||
197 | drm_master_put(&file_priv->minor->master); | ||
198 | } | ||
199 | } | ||
191 | mutex_unlock(&dev->struct_mutex); | 200 | mutex_unlock(&dev->struct_mutex); |
192 | } | 201 | } |
193 | 202 | ||
@@ -204,6 +213,8 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data, | |||
204 | return -EINVAL; | 213 | return -EINVAL; |
205 | 214 | ||
206 | mutex_lock(&dev->struct_mutex); | 215 | mutex_lock(&dev->struct_mutex); |
216 | if (dev->driver->master_drop) | ||
217 | dev->driver->master_drop(dev, file_priv, false); | ||
207 | drm_master_put(&file_priv->minor->master); | 218 | drm_master_put(&file_priv->minor->master); |
208 | file_priv->is_master = 0; | 219 | file_priv->is_master = 0; |
209 | mutex_unlock(&dev->struct_mutex); | 220 | mutex_unlock(&dev->struct_mutex); |