On Mon, 16 Jun 2014, Darren Hart wrote: > On Fri, 2014-06-13 at 11:44 +0200, Thomas Gleixner wrote: > Two general concerns, we appear to be eliminating both the force_take > and the retry. > > The force_take only occurs if TID==0, and that is covered here in a > cleaner way, so I believe we are good here. > > As for the retry, the remaining use case (outside of TID==0 -> > force_take=1 -> retry) appears to be that userspace changed the value > while we were running. Reading the value early doesn't protect us from > this scenario. How does this change account for that? > > It looks to me that before we would retry, while here we just give up > and return -EAGAIN..., which is addressed in futex_lock_pi(), but not in > the futex_requeue() callsite for futex_proxy_trylock_atomic. It does > handle it, but I guess also needs a comment update to "The owner was > exiting" to include "or userspace changed the value" as you did for > futex_lock_pi().
Right. I moved the handling back to the call site which has to handle the various error return codes anyway. > >From my analysis, this is a good cleanup and makes the code for > explicit. I'm nervous about missing corner cases, and would like to > understand what level of testing this has received. We need to add PI > locking tests to futextest. There are some in glibc. Which tests were > run to validate PI locking? I ran it against everything I have. libc tests, your stuff, rt-tests and random exploit and corner case exposure code I collected/wrote in the last few weeks. Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/