diff options
Diffstat (limited to 'linux-core')
| -rw-r--r-- | linux-core/drm_lock.c | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/linux-core/drm_lock.c b/linux-core/drm_lock.c index d4c2da0c..573213de 100644 --- a/linux-core/drm_lock.c +++ b/linux-core/drm_lock.c @@ -105,14 +105,19 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv)  		  ret ? "interrupted" : "has lock");  	if (ret) return ret; -	sigemptyset(&dev->sigmask); -	sigaddset(&dev->sigmask, SIGSTOP); -	sigaddset(&dev->sigmask, SIGTSTP); -	sigaddset(&dev->sigmask, SIGTTIN); -	sigaddset(&dev->sigmask, SIGTTOU); -	dev->sigdata.context = lock->context; -	dev->sigdata.lock = dev->lock.hw_lock; -	block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask); +	/* don't set the block all signals on the master process for now  +	 * really probably not the correct answer but lets us debug xkb + 	 * xserver for now */ +	if (!file_priv->master) { +		sigemptyset(&dev->sigmask); +		sigaddset(&dev->sigmask, SIGSTOP); +		sigaddset(&dev->sigmask, SIGTSTP); +		sigaddset(&dev->sigmask, SIGTTIN); +		sigaddset(&dev->sigmask, SIGTTOU); +		dev->sigdata.context = lock->context; +		dev->sigdata.lock = dev->lock.hw_lock; +		block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask); +	}  	if (dev->driver->dma_ready && (lock->flags & _DRM_LOCK_READY))  		dev->driver->dma_ready(dev); | 
