Linux Watchdog driver development
 help / color / mirror / Atom feed
* Question about cpu5wdt del_timer fix
@ 2024-07-03 14:39 Jean Delvare
  2024-07-16 13:35 ` Jean Delvare
  0 siblings, 1 reply; 2+ messages in thread
From: Jean Delvare @ 2024-07-03 14:39 UTC (permalink / raw)
  To: Duoming Zhou; +Cc: Guenter Roeck, Wim Van Sebroeck, linux-watchdog

Hi Zhou,

I have been asked to backport kernel commit 573601521277 ("watchdog:
cpu5wdt.c: Fix use-after-free bug caused by cpu5wdt_trigger") because
it was assigned a CVE number (CVE-2024-38630).

I was about to just backport the commit as it is pretty simple, however
out of curiosity I looked at the code and I must say I just can't see
which bug is being fixed.

The commit description says that there was a race condition if
cpu5wdt_trigger() was still running after del_timer() when
release_region() is being called as part of cpu5wdt_exit().

The way I read the original code (before your commit):

* In cpu5wdt_exit(), del_timer() is called after
  wait_for_completion(&cpu5wdt_device.stop).

* The completion happens at only one point in the driver, that's in
  cpu5wdt_trigger(), and that's an alternative to rearming the timer.
  Therefore we are guaranteed that no timer is armed when we reach
  del_timer() in cpu5wdt_exit().

* Also this happens *after* the outb() to the I/O region, and I don't
  think the compiler is allowed to reorder that. So even if
  cpu5wdt_trigger() still has to finish after the completion, it can't
  race with release_region().

So I do not think that replacing del_timer() with timer_shutdown_sync()
was needed. The only point of switching to timer_shutdown_sync(), as I
understand it, would be to get rid of the completion to simplify the
code a bit.

Am I missing anything?

-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-07-16 13:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-03 14:39 Question about cpu5wdt del_timer fix Jean Delvare
2024-07-16 13:35 ` Jean Delvare

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox