Messages in this thread | | | Date | Wed, 20 Apr 2022 20:16:37 +0200 | From | Heiko Carstens <> | Subject | Re: [PATCH 4/9] s390/irq: utilize RCU instead of irq_lock_sparse() in show_msi_interrupt() |
| |
On Wed, Apr 20, 2022 at 10:05:16PM +0800, Pingfan Liu wrote: > irq_desc can be accessed safely in RCU read section as demonstrated by > kstat_irqs_usr(). And raw_spin_lock_irqsave() context can provide a rcu > read section, which can be utilized to get rid of irq_lock_sparse(). > > Signed-off-by: Pingfan Liu <kernelfans@gmail.com> > Cc: Heiko Carstens <hca@linux.ibm.com> > Cc: Vasily Gorbik <gor@linux.ibm.com> > Cc: Alexander Gordeev <agordeev@linux.ibm.com> > Cc: Christian Borntraeger <borntraeger@linux.ibm.com> > Cc: Sven Schnelle <svens@linux.ibm.com> > Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > Cc: linux-kernel@vger.kernel.org > To: linux-s390@vger.kernel.org > --- > arch/s390/kernel/irq.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c > index 3033f616e256..6302dc7874cf 100644 > --- a/arch/s390/kernel/irq.c > +++ b/arch/s390/kernel/irq.c > @@ -205,12 +205,13 @@ static void show_msi_interrupt(struct seq_file *p, int irq) > unsigned long flags; > int cpu; > > - irq_lock_sparse(); > + raw_spin_lock_irqsave(&desc->lock, flags); > desc = irq_to_desc(irq);
How is this supposed to work? desc get's initialized after its random stack value has been used as a pointer to lock something...
| |