> > I don't think that works. drm_open_helper doesn't appear to be under the > > BKL merely the struct mutex. > > It blocks the case you specified of two releases happening together. But not parallel open/release > > But setmaster can sleep so the BKL is dropped on contention of the > > struct_mutex, ditto dropmaster > > they should only sleep in the mutex lock nuless the driver callback is > allocating memory. but yeah its a bit of a mess. With the mutex alone the damage is done. Consider two setmasters and some other action which is making the mutex contend CPU1 CPU2 file->priv->minor->master == NULL ? file_priv->minor->master != file_priv->master mutex_lock (drop BKL) file->priv->minor->master === NULL master != file_priv->master mutex_lock [drop BKL] takes mutex minor->master = drm_master_get is_master = 1 master_set drop mutex return 0 takes mutex minor->master = drm_master_get is_master = 1 master_set drops mutex return 0 Alan _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel