On Tue, Nov 14, 2017 at 12:10:46PM +0100, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > On Tue, Nov 14, 2017 at 10:34:49AM +0000, Oleksandr Shamray wrote: > > Greg, what you can suggest about it. May be better to add again single-open()-per-device lock with right locking way like: > > > > >if (mutex_lock_interruptible(&jtag->open_lock)) { > > You would stall an open? Why not just return saying you can't do that? Greg, I think you need to look at the code again. >From the snippet in the email, this lock is not held while the device is open, as you apparently think it is. It's a short-term lock that is held to ensure atomic access to the jtag->opened member, so that two concurrent opens are unable to operate lock-step, resulting in jtag->opened becoming 2. The open function snippet in the email drops the lock as soon as it has incremented jtag->opened, or encounters an error. It seems entirely sensible, rather than using an atomic_t counter, as it means that other openers are held off until the current opener has either succeeded in opening the device or failed to open it. -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up According to speedtest.net: 8.21Mbps down 510kbps up -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html