Revert "drm: drop redundant drm_file->is_master"

This reverts commit 48ba813701.

Thanks to Chris:
"drm_file->is_master is not synomous with having drm_file->master ==
drm_file->minor->master. This is because drm_file->master is the same
for all drm_files of the same generation and so when there is a master,
every drm_file believes itself to be the master. Confusion ensues and
things go pear shaped when one file is closed and there is no master
anymore."

Conflicts:
	drivers/gpu/drm/drm_drv.c
	drivers/gpu/drm/drm_stub.c
This commit is contained in:
Dave Airlie
2014-08-08 07:30:53 +10:00
parent fa1d0ee69c
commit 7963e9db1b
9 changed files with 20 additions and 27 deletions

View File

@@ -384,6 +384,8 @@ struct drm_prime_file_private {
/** File private data */
struct drm_file {
unsigned authenticated :1;
/* Whether we're master for a minor. Protected by master_mutex */
unsigned is_master :1;
/* true when the client has asked us to expose stereo 3D mode flags */
unsigned stereo_allowed :1;
/*
@@ -1020,7 +1022,7 @@ struct drm_device {
/** \name Locks */
/*@{ */
struct mutex struct_mutex; /**< For others */
struct mutex master_mutex; /**< For drm_minor::master */
struct mutex master_mutex; /**< For drm_minor::master and drm_file::is_master */
/*@} */
/** \name Usage Counters */
@@ -1158,21 +1160,6 @@ static inline bool drm_is_primary_client(const struct drm_file *file_priv)
return file_priv->minor->type == DRM_MINOR_LEGACY;
}
/**
* drm_is_master() - Check whether a DRM open-file is DRM-Master
* @file: DRM open-file context
*
* This checks whether a DRM open-file context is owner of the master context
* attached to it. If a file owns a master context, it's called DRM-Master.
* Per DRM device, only one such file can be DRM-Master at a time.
*
* Returns: True if the file is DRM-Master, otherwise false.
*/
static inline bool drm_is_master(const struct drm_file *file)
{
return file->master && file->master == file->minor->master;
}
/******************************************************************/
/** \name Internal function definitions */
/*@{*/