On Sat, Apr 13, 2019 at 01:22:50PM -0400, Waiman Long wrote: > +/* > + * This is safe to be called without holding the wait_lock.
Because.... @waiter is *our* waiter and it's not going anywhere. So when it's first, it stays first until we do something about it. > + */ > +static inline bool > +rwsem_waiter_is_first(struct rw_semaphore *sem, struct rwsem_waiter *waiter) > +{ > + return list_first_entry(&sem->wait_list, struct rwsem_waiter, list) > + == waiter; > +}