Commit 3f27958
sched_ext: Use READ_ONCE() for plain reads of scx_watchdog_timeout
scx_watchdog_timeout is written with WRITE_ONCE() in scx_enable():
WRITE_ONCE(scx_watchdog_timeout, timeout);
However, three read-side accesses use plain reads without the matching
READ_ONCE():
/* check_rq_for_timeouts() - L2824 */
last_runnable + scx_watchdog_timeout
/* scx_watchdog_workfn() - L2852 */
scx_watchdog_timeout / 2
/* scx_enable() - L5179 */
scx_watchdog_timeout / 2
The KCSAN documentation requires that if one accessor uses WRITE_ONCE()
to annotate lock-free access, all other accesses must also use the
appropriate accessor. Plain reads alongside WRITE_ONCE() leave the pair
incomplete and can trigger KCSAN warnings.
Note that scx_tick() already uses the correct READ_ONCE() annotation:
last_check + READ_ONCE(scx_watchdog_timeout)
Fix the three remaining plain reads to match, making all accesses to
scx_watchdog_timeout consistently annotated and KCSAN-clean.
Signed-off-by: zhidao su <suzhidao@xiaomi.com>
Signed-off-by: Tejun Heo <tj@kernel.org>1 parent 494eaf4 commit 3f27958
1 file changed
+3
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2739 | 2739 | | |
2740 | 2740 | | |
2741 | 2741 | | |
2742 | | - | |
| 2742 | + | |
2743 | 2743 | | |
2744 | 2744 | | |
2745 | 2745 | | |
| |||
2767 | 2767 | | |
2768 | 2768 | | |
2769 | 2769 | | |
2770 | | - | |
| 2770 | + | |
2771 | 2771 | | |
2772 | 2772 | | |
2773 | 2773 | | |
| |||
5081 | 5081 | | |
5082 | 5082 | | |
5083 | 5083 | | |
5084 | | - | |
| 5084 | + | |
5085 | 5085 | | |
5086 | 5086 | | |
5087 | 5087 | | |
| |||
0 commit comments