and I can't see what makes this safe if the drm_release for the master and a client occur at the same time ?
lock_kernel in drm_release. We probably need to clean that up.
I don't think that works. drm_open_helper doesn't appear to be under the BKL merely the struct mutex.
The setmaster/dropmaster ioctl seems similar - the various conditional checks are not protected from parallel changes occuring during their execution.
Is this a bug or is something clever afoot ?
These ioctls are also under the BKL.
But setmaster can sleep so the BKL is dropped on contention of the struct_mutex, ditto dropmaster
Alan