On Thu, Jul 21, 2016 at 07:06:15PM -0400, Rich Felker wrote: > On Thu, Jul 21, 2016 at 11:43:08PM +0100, Mark Brown wrote: > > On Thu, Jul 21, 2016 at 05:40:15PM -0400, Rich Felker wrote: > > spi_sync() shouldn't be reading the flag in the first place as far as I > > can tell, it should unconditionally have the flag clear as locked > > callers have to use spi_sync_locked() but that will give us a fast path > > that doesn't check for the bus lock which starts to reveal the > > underlying issue. > Ah, in that case maybe the actual bug is just one line of commit > 24c8cd1b0812? Reverting just that also seems to make the problem go > away. For those playing at home that's "spi: fix possible deadlock between internal bus locks and bus_lock_flag". That won't work entirely since that'd mean that we're not doing I/O locking to exclude the message pump in cases where we push data directly in spi_sync() with the bus lock held by a caller. That's probably going to work most of the time as most callers will be single threaded but they might not be. It should be saved by the checks to see if we're already processing a message inside the pump function but it's better to be clear about what we're doing I think, and we can clear cur_msg inside the message pump. But perhaps it's enough... anyway, I'm not going to think through all the cases properly at this time of night. Please include human readable descriptions of things like commits and issues being discussed in e-mail in your mails, this makes them much easier for humans to read especially when they have no internet access. I do frequently catch up on my mail on flights or while otherwise travelling so this is even more pressing for me than just being about making things a bit easier to read.
Attachment:
signature.asc
Description: PGP signature