Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 26 Jun 2023 13:56:18 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH v2 1/2] seqlock: Do the lockdep annotation before locking in do_write_seqcount_begin_nested() |
| |
On Fri, Jun 23, 2023 at 07:12:31PM +0200, Sebastian Andrzej Siewior wrote: > It was brought up by Tetsuo that the following sequence > write_seqlock_irqsave() > printk_deferred_enter() > > could lead to a deadlock if the lockdep annotation within > write_seqlock_irqsave() triggers. The problem is that the sequence > counter is incremented before the lockdep annotation is performed. The > lockdep splat would then attempt to invoke printk() but the reader side, > of the same seqcount, could have a tty_port::lock acquired waiting for > the sequence number to become even again. > > The other lockdep annotations come before the actual locking because "we > want to see the locking error before it happens". There is no reason why > seqcount should be different here. > > Do the lockdep annotation first then perform the locking operation (the > sequence increment). > > Fixes: 1ca7d67cf5d5a ("seqcount: Add lockdep functionality to seqcount/seqlock structures") > Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> > Link: https://lore.kernel.org/20230621130641.-5iueY1I@linutronix.de > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Mel Gorman <mgorman@techsingularity.net>
-- Mel Gorman SUSE Labs
| ![\](/images/icornerr.gif) |