diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-07-22 12:46:09 -0400 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-08-05 10:07:50 -0400 |
commit | 48ba813701eb14b3008edefef4a0789b328e278c (patch) | |
tree | cab45fc97db3eb800338196add945c6f47643cee /drivers/gpu/drm/drm_stub.c | |
parent | 9f8d21ea276177547725a60cefc1b6da742f14d3 (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.c | 10 |
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 | ||
203 | out_unlock: | 200 | out_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 | ||
226 | out_unlock: | 222 | out_unlock: |
227 | mutex_unlock(&dev->master_mutex); | 223 | mutex_unlock(&dev->master_mutex); |