On 2023-06-24 15:54:12 [+0900], Tetsuo Handa wrote: > Why not to do the same on the end side? > > static inline void do_write_seqcount_end(seqcount_t *s) > { > - seqcount_release(&s->dep_map, _RET_IP_); > do_raw_write_seqcount_end(s); > + seqcount_release(&s->dep_map, _RET_IP_); > } I don't have a compelling argument for doing it. It is probably better to release the lock from lockdep's point of view and then really release it (so it can't be acquired before it is released). Looking at other locking primitives (spin_lock_unlock(), mutex_unlock(),…) that is what they do in the unlock path: lockdep annotation followed by the actual operation. Therefore I would keep the current ordering to remain in-sync with the other primitives. Sebastian