All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: shengminghu512 <shengminghu512@qq.com>, tglx <tglx@linutronix.de>,
	mingo <mingo@kernel.org>, broonie <broonie@kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"hu.shengming" <hu.shengming@zte.com.cn>,
	"zhang.run" <zhang.run@zte.com.cn>
Subject: Re: [PATCH] watchdog/softlockup: Fix sample ring index wrap in need_counting_irqs()
Date: Thu, 29 Jan 2026 10:42:37 +0100	[thread overview]
Message-ID: <aXsrjQ-GK9UG6xEg@pathway.suse.cz> (raw)
In-Reply-To: <20260128101339.658d522c69bb4466218ee437@linux-foundation.org>

On Wed 2026-01-28 10:13:39, Andrew Morton wrote:
> On Wed, 28 Jan 2026 18:52:11 +0100 Petr Mladek <pmladek@suse.com> wrote:
> 
> > On Mon 2026-01-19 21:59:05, shengminghu512 wrote:
> > > From: Shengming Hu <hu.shengming@zte.com.cn>
> > > 
> > > cpustat_tail indexes cpustat_util[], which is a NUM_SAMPLE_PERIODS-sized
> > > ring buffer. need_counting_irqs() currently wraps the index using
> > > NUM_HARDIRQ_REPORT, which only happens to match NUM_SAMPLE_PERIODS.
> > > 
> > > Use NUM_SAMPLE_PERIODS for the wrap to keep the ring math correct even if
> > > the NUM_HARDIRQ_REPORT or  NUM_SAMPLE_PERIODS changes.
> > > 
> > > ---
> > >  kernel/watchdog.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/kernel/watchdog.c b/kernel/watchdog.c
> > > index b4d5fbdb9..7d675781b 100644
> > > --- a/kernel/watchdog.c
> > > +++ b/kernel/watchdog.c
> > > @@ -550,7 +550,7 @@ static bool need_counting_irqs(void)
> > >  	u8 util;
> > >  	int tail = __this_cpu_read(cpustat_tail);
> > >  
> > > -	tail = (tail + NUM_HARDIRQ_REPORT - 1) % NUM_HARDIRQ_REPORT;
> > > +	tail = (tail + NUM_SAMPLE_PERIODS - 1) % NUM_SAMPLE_PERIODS;
> > >  	util = __this_cpu_read(cpustat_util[tail][STATS_HARDIRQ]);
> > >  	return util > HARDIRQ_PERCENT_THRESH;
> > 
> > Great catch! It makes perfect sense.
> > 
> > The NUM_HARDIRQ_REPORT is used for another array (irq_counts_sorted[])
> > with the most frequent IRQs. This code was added with the same commit
> > which added the other array. It would explain the mistake.
> > 
> > Reviewed-by: Petr Mladek <pmladek@suse.com>
> 
> Fixes: e9a9292e2368 ("watchdog/softlockup: Report the most frequent
> interrupts"), yes?

Yes.

> What are the runtime effects of this?  "most frequent interrupts" data
> is messed up?

It does not have any affect at the moment because both
NUM_HARDIRQ_REPORT and NUM_SAMPLE_PERIODS are defined as '5'.

It is rather a proactive fix. I might cause an invalid access
when anyone increases NUM_HARDIRQ_REPORT count in the future.
The purpose of this value is different.

> I'm assuming we want to fix earlier kernels, so cc:stable?

Good point. It is a good to have in stable.

> > Andrew, I assume that you would take it...
> 
> Sure, I can queue it.  e9a9292e2368 was merged by tglx so he might want
> to take it - if so I'll drop the mm.git copy if/when this appears in
> linux-next.

Thanks for taking it.

Best Regards,
Petr

  reply	other threads:[~2026-01-29  9:42 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-19 13:59 [PATCH] watchdog/softlockup: Fix sample ring index wrap in need_counting_irqs() shengminghu512
2026-01-28 17:52 ` Petr Mladek
2026-01-28 18:13   ` Andrew Morton
2026-01-29  9:42     ` Petr Mladek [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-01-18  9:14 shengminghu512

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aXsrjQ-GK9UG6xEg@pathway.suse.cz \
    --to=pmladek@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=broonie@kernel.org \
    --cc=hu.shengming@zte.com.cn \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=shengminghu512@qq.com \
    --cc=tglx@linutronix.de \
    --cc=zhang.run@zte.com.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.