Revision 8cd9da85d2bd87ce889043e7b1735723dd10eb89 authored by Frederic Weisbecker on 13 September 2021, 14:53:32 UTC, committed by Thomas Gleixner on 23 September 2021, 09:53:51 UTC
Resetting/stopping an itimer eventually leads to it being reprogrammed with an actual "0" value. As a result the itimer expires on the next tick, triggering an unexpected signal. To fix this, make sure that struct signal_struct::it[CPUCLOCK_PROF/VIRT]::expires is set to 0 when setitimer() passes a 0 it_value, indicating that the timer must stop. Fixes: 406dd42bd1ba ("posix-cpu-timers: Force next expiration recalc after itimer reset") Reported-by: Victor Stinner <vstinner@redhat.com> Reported-by: Chris Hixon <linux-kernel-bugs@hixontech.com> Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20210913145332.232023-1-frederic@kernel.org
1 parent e4e737b
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 5.4 KB |
Makefile | -rw-r--r-- | 918 bytes |
dsa.c | -rw-r--r-- | 11.6 KB |
dsa2.c | -rw-r--r-- | 34.7 KB |
dsa_priv.h | -rw-r--r-- | 17.8 KB |
master.c | -rw-r--r-- | 10.6 KB |
port.c | -rw-r--r-- | 32.1 KB |
slave.c | -rw-r--r-- | 65.7 KB |
switch.c | -rw-r--r-- | 18.6 KB |
tag_8021q.c | -rw-r--r-- | 17.4 KB |
tag_ar9331.c | -rw-r--r-- | 2.3 KB |
tag_brcm.c | -rw-r--r-- | 8.6 KB |
tag_dsa.c | -rw-r--r-- | 11.4 KB |
tag_gswip.c | -rw-r--r-- | 2.7 KB |
tag_hellcreek.c | -rw-r--r-- | 1.4 KB |
tag_ksz.c | -rw-r--r-- | 5.6 KB |
tag_lan9303.c | -rw-r--r-- | 3.7 KB |
tag_mtk.c | -rw-r--r-- | 2.6 KB |
tag_ocelot.c | -rw-r--r-- | 5.2 KB |
tag_ocelot_8021q.c | -rw-r--r-- | 1.9 KB |
tag_qca.c | -rw-r--r-- | 2.3 KB |
tag_rtl4_a.c | -rw-r--r-- | 3.0 KB |
tag_sja1105.c | -rw-r--r-- | 21.1 KB |
tag_trailer.c | -rw-r--r-- | 1.3 KB |
tag_xrs700x.c | -rw-r--r-- | 1.3 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...