Re: [PATCH v2 1/2] seqlock: Do the lockdep annotation before locking in do_write_seqcount_begin_nested()

From: Sebastian Andrzej Siewior
Date: Mon Jun 26 2023 - 04:13:24 EST


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