doubts concerning locking and signals in input_register_device()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am looking at this code in input_register_device():

        error = mutex_lock_interruptible(&input_mutex);
        if (error)
                goto err_device_del;

The problem is not the scope of the locking, but how the
lock is taken.
AFAICT this code will be called in the context of an
ordinary task when you set a configuration through usbfs.
usb_set_configuration() has to probe all interfaces
of a device under its new configuration and does not
handle -EINTR, which input_register_device() will
return when a signal interrupts taking the mutex.

Hence there is a window for a race during which a
mistimed harmless signal will cause a failure of probe()

Now, as this is fairly core code I'd rather ask what
you think before I make the simple fix of taking
the mutex with uninterruptible sleep. What is to be done?

	Regards
		Oliver



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux