On 01/30/2019 02:30 PM, Alexei Starovoitov wrote: > On Wed, Jan 30, 2019 at 11:15:30AM +0100, Peter Zijlstra wrote: >> On Tue, Jan 29, 2019 at 08:04:56PM -0800, Alexei Starovoitov wrote: >>> Lockdep warns about false positive: >> This is not a false positive, and you probably also need to use >> down_read_non_owner() to match this up_read_non_owner(). >> >> {up,down}_read() and {up,down}_read_non_owner() are not only different >> in the lockdep annotation; there is also optimistic spin stuff that >> relies on 'owner' tracking. > Can you point out in the code the spin bit? > As far as I can see sem->owner is debug only feature. > All owner checks are done under CONFIG_DEBUG_RWSEMS.
No, sem->owner is mainly for performing optimistic spinning which is a performance feature to make rwsem writer-lock performs similar to mutex. The debugging part is just an add-on. It is not the reason for the presence of sem->owner. > Also there is no down_read_trylock_non_owner() at the moment. > We can argue about it for -next, but I'd rather silence lockdep > with this patch today. > We can add down_read_trylock_non_owner() if there is a need for it. It should be easy to do. Cheers, Longman down_read_trylock_non_owner(