aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_stub.c
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2014-07-22 12:46:09 -0400
committerDavid Herrmann <dh.herrmann@gmail.com>2014-08-05 10:07:50 -0400
commit48ba813701eb14b3008edefef4a0789b328e278c (patch)
treecab45fc97db3eb800338196add945c6f47643cee /drivers/gpu/drm/drm_stub.c
parent9f8d21ea276177547725a60cefc1b6da742f14d3 (diff)
drm: drop redundant drm_file->is_master
The drm_file->is_master field is redundant as it's equivalent to: drm_file->master && drm_file->master == drm_file->minor->master 1) "=>" Whenever we set drm_file->is_master, we also set: drm_file->minor->master = drm_file->master; Whenever we clear drm_file->is_master, we also call: drm_master_put(&drm_file->minor->master); which implicitly clears it to NULL. 2) "<=" minor->master cannot be set if it is non-NULL. Therefore, it stays as is unless a file drops it. If minor->master is NULL, it is only set by places that also adjust drm_file->is_master. Therefore, we can safely drop is_master and replace it by an inline helper that matches: drm_file->master && drm_file->master == drm_file->minor->master Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/drm_stub.c')
-rw-r--r--drivers/gpu/drm/drm_stub.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index 233ea208c9fe..18c9b3d8201e 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -177,7 +177,7 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
177 int ret = 0; 177 int ret = 0;
178 178
179 mutex_lock(&dev->master_mutex); 179 mutex_lock(&dev->master_mutex);
180 if (file_priv->is_master) 180 if (drm_is_master(file_priv))
181 goto out_unlock; 181 goto out_unlock;
182 182
183 if (file_priv->minor->master) { 183 if (file_priv->minor->master) {
@@ -191,13 +191,10 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
191 } 191 }
192 192
193 file_priv->minor->master = drm_master_get(file_priv->master); 193 file_priv->minor->master = drm_master_get(file_priv->master);
194 file_priv->is_master = 1;
195 if (dev->driver->master_set) { 194 if (dev->driver->master_set) {
196 ret = dev->driver->master_set(dev, file_priv, false); 195 ret = dev->driver->master_set(dev, file_priv, false);
197 if (unlikely(ret != 0)) { 196 if (unlikely(ret != 0))
198 file_priv->is_master = 0;
199 drm_master_put(&file_priv->minor->master); 197 drm_master_put(&file_priv->minor->master);
200 }
201 } 198 }
202 199
203out_unlock: 200out_unlock:
@@ -211,7 +208,7 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
211 int ret = -EINVAL; 208 int ret = -EINVAL;
212 209
213 mutex_lock(&dev->master_mutex); 210 mutex_lock(&dev->master_mutex);
214 if (!file_priv->is_master) 211 if (!drm_is_master(file_priv))
215 goto out_unlock; 212 goto out_unlock;
216 213
217 if (!file_priv->minor->master) 214 if (!file_priv->minor->master)
@@ -221,7 +218,6 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
221 if (dev->driver->master_drop) 218 if (dev->driver->master_drop)
222 dev->driver->master_drop(dev, file_priv, false); 219 dev->driver->master_drop(dev, file_priv, false);
223 drm_master_put(&file_priv->minor->master); 220 drm_master_put(&file_priv->minor->master);
224 file_priv->is_master = 0;
225 221
226out_unlock: 222out_unlock:
227 mutex_unlock(&dev->master_mutex); 223 mutex_unlock(&dev->master_mutex);