Revert "drm: serialize drm_file.master with a new spinlock"

This reverts commit 06a553a99b which is
commit 0b0860a3cf5eccf183760b1177a1dcdb821b0b66 upstream and came into
the tree in 5.10.67.

The original commit broke the abi and isn't needed for Android systems,
so revert it.

Fixes: faf816b0f8 ("Linux 5.10.67")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I601e116ea2a590f52fe12f59df5288329318ec1c
This commit is contained in:
Greg Kroah-Hartman 2021-09-20 12:25:48 +02:00
parent 49faae8510
commit 5b4909f961
3 changed files with 9 additions and 21 deletions

View File

@ -135,18 +135,16 @@ static void drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
{
struct drm_master *old_master;
struct drm_master *new_master;
lockdep_assert_held_once(&dev->master_mutex);
WARN_ON(fpriv->is_master);
old_master = fpriv->master;
new_master = drm_master_create(dev);
if (!new_master)
fpriv->master = drm_master_create(dev);
if (!fpriv->master) {
fpriv->master = old_master;
return -ENOMEM;
spin_lock(&fpriv->master_lookup_lock);
fpriv->master = new_master;
spin_unlock(&fpriv->master_lookup_lock);
}
fpriv->is_master = 1;
fpriv->authenticated = 1;
@ -304,13 +302,10 @@ int drm_master_open(struct drm_file *file_priv)
/* if there is no current master make this fd it, but do not create
* any master object for render clients */
mutex_lock(&dev->master_mutex);
if (!dev->master) {
if (!dev->master)
ret = drm_new_set_master(dev, file_priv);
} else {
spin_lock(&file_priv->master_lookup_lock);
else
file_priv->master = drm_master_get(dev->master);
spin_unlock(&file_priv->master_lookup_lock);
}
mutex_unlock(&dev->master_mutex);
return ret;

View File

@ -177,7 +177,6 @@ struct drm_file *drm_file_alloc(struct drm_minor *minor)
init_waitqueue_head(&file->event_wait);
file->event_space = 4096; /* set aside 4k for event buffer */
spin_lock_init(&file->master_lookup_lock);
mutex_init(&file->event_read_lock);
if (drm_core_check_feature(dev, DRIVER_GEM))

View File

@ -226,21 +226,15 @@ struct drm_file {
/**
* @master:
*
* Master this node is currently associated with. Protected by struct
* &drm_device.master_mutex, and serialized by @master_lookup_lock.
*
* Only relevant if drm_is_primary_client() returns true. Note that
* this only matches &drm_device.master if the master is the currently
* active one.
* Master this node is currently associated with. Only relevant if
* drm_is_primary_client() returns true. Note that this only
* matches &drm_device.master if the master is the currently active one.
*
* See also @authentication and @is_master and the :ref:`section on
* primary nodes and authentication <drm_primary_node>`.
*/
struct drm_master *master;
/** @master_lock: Serializes @master. */
spinlock_t master_lookup_lock;
/** @pid: Process that opened this file. */
struct pid *pid;