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@xxxxxxxxxxxxxxxxxxx> > Link: https://lore.kernel.org/20230621130641.-5iueY1I@xxxxxxxxxxxxx > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> Acked-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> -- Mel Gorman SUSE Labs