clocksource/drivers/timer-sun4i: Advertise a real minimum delta
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: clocksource/drivers/timer-sun4i: Advertise a real minimum delta sun4i_clkevt_next_event() compensates for the timer stop/start synchronization delay by programming evt - TIMER_SYNC_TICKS into the hardware interval register. The clockevent device currently advertises TIMER_SYNC_TICKS as min_delta_ticks, so the clockevents core is allowed to call set_next_event() with evt == TIMER_SYNC_TICKS. That programs a zero-tick interval. With oneshot/highres/nohz timer operation this can leave the next event stuck, which was observed as a boot hang on Allwinner D1 after the clockevents core started reusing forced minimum-delta events. Advertise one extra tick instead, so the smallest event accepted by the core still programs at least one hardware tick after the synchronization compensation.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in 0cc4b14d7401d50e53a01f1554147ee075ee6943; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in 53a3bc024b8e5d284468cce84957cded5f859f98; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in 753a220084dfc4d737f2ab9eaddc9a01a397edd7; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in ebba4d0aeba0e8eb3a9676380fc2652de8ab1c44; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in 151eb52f8712017c8f7b00bb2305e8916cb9e3dc; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in bf38be01d43c4e4ca903aff7236d8486a950a252; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in f0efafcdf6eec1f3361bfd8c811420198f55c8bb; From 12e1480bcb4920c1b02b3793cb48756497919a60 · fixed in d21808328225ab8cee46885bf9a0dffcefbe630e
- Linux Linux
3.13
- KernelLinux
From 3.13.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.109; From 6.13.0 · fixed in 6.18.50; From 6.19.0 · fixed in 7.2.4
References 8
git.kernel.org
- stable/c/0cc4b14d7401d50e53a01f1554147ee075ee6943
- stable/c/53a3bc024b8e5d284468cce84957cded5f859f98
- stable/c/753a220084dfc4d737f2ab9eaddc9a01a397edd7
- stable/c/ebba4d0aeba0e8eb3a9676380fc2652de8ab1c44
- stable/c/151eb52f8712017c8f7b00bb2305e8916cb9e3dc
- stable/c/bf38be01d43c4e4ca903aff7236d8486a950a252
- stable/c/f0efafcdf6eec1f3361bfd8c811420198f55c8bb
- stable/c/d21808328225ab8cee46885bf9a0dffcefbe630e