* kernel/time/sched_clock.c:219:13: sparse: sparse: dereference of noderef expression
@ 2026-01-13 9:06 kernel test robot
2026-01-13 14:01 ` [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function Thomas Gleixner
0 siblings, 1 reply; 6+ messages in thread
From: kernel test robot @ 2026-01-13 9:06 UTC (permalink / raw)
To: Nam Cao; +Cc: oe-kbuild-all, linux-kernel, Ingo Molnar, Thomas Gleixner
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: b71e635feefc852405b14620a7fc58c4c80c0f73
commit: 04257da0c99c9d4ff7c5bb93046482e1f7d34938 hrtimers: Make callback function pointer private
date: 9 months ago
config: arm64-randconfig-r121-20260113 (https://download.01.org/0day-ci/archive/20260113/202601131713.KsxhXQ0M-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260113/202601131713.KsxhXQ0M-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601131713.KsxhXQ0M-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> kernel/time/sched_clock.c:219:13: sparse: sparse: dereference of noderef expression
vim +219 kernel/time/sched_clock.c
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 176
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 177 void __init
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 178 sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 179 {
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 180 u64 res, wrap, new_mask, new_epoch, cyc, ns;
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 181 u32 new_mult, new_shift;
2707745533d6d3 kernel/time/sched_clock.c Paul Cercueil 2020-01-07 182 unsigned long r, flags;
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 183 char r_unit;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 184 struct clock_read_data rd;
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 185
c115739da801ea arch/arm/kernel/sched_clock.c Rob Herring 2013-02-08 186 if (cd.rate > rate)
c115739da801ea arch/arm/kernel/sched_clock.c Rob Herring 2013-02-08 187 return;
c115739da801ea arch/arm/kernel/sched_clock.c Rob Herring 2013-02-08 188
2707745533d6d3 kernel/time/sched_clock.c Paul Cercueil 2020-01-07 189 /* Cannot register a sched_clock with interrupts on */
2707745533d6d3 kernel/time/sched_clock.c Paul Cercueil 2020-01-07 190 local_irq_save(flags);
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 191
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 192 /* Calculate the mult/shift to convert counter ticks to ns. */
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 193 clocks_calc_mult_shift(&new_mult, &new_shift, rate, NSEC_PER_SEC, 3600);
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 194
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 195 new_mask = CLOCKSOURCE_MASK(bits);
8710e914027e4f kernel/time/sched_clock.c Daniel Thompson 2015-03-26 196 cd.rate = rate;
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 197
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 198 /* Calculate how many nanosecs until we risk wrapping */
fb82fe2fe85887 kernel/time/sched_clock.c John Stultz 2015-03-11 199 wrap = clocks_calc_max_nsecs(new_mult, new_shift, 0, new_mask, NULL);
8710e914027e4f kernel/time/sched_clock.c Daniel Thompson 2015-03-26 200 cd.wrap_kt = ns_to_ktime(wrap);
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 201
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 202 rd = cd.read_data[0];
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 203
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 204 /* Update epoch for new counter and update 'epoch_ns' from old counter*/
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 205 new_epoch = read();
13dbeb384d2d3a kernel/time/sched_clock.c Daniel Thompson 2015-03-26 206 cyc = cd.actual_read_sched_clock();
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 207 ns = rd.epoch_ns + cyc_to_ns((cyc - rd.epoch_cyc) & rd.sched_clock_mask, rd.mult, rd.shift);
13dbeb384d2d3a kernel/time/sched_clock.c Daniel Thompson 2015-03-26 208 cd.actual_read_sched_clock = read;
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 209
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 210 rd.read_sched_clock = read;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 211 rd.sched_clock_mask = new_mask;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 212 rd.mult = new_mult;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 213 rd.shift = new_shift;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 214 rd.epoch_cyc = new_epoch;
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 215 rd.epoch_ns = ns;
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 216
1809bfa44e1019 kernel/time/sched_clock.c Daniel Thompson 2015-03-26 217 update_clock_read_data(&rd);
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 218
1b8955bc5ac575 kernel/time/sched_clock.c David Engraf 2017-02-17 @219 if (sched_clock_timer.function != NULL) {
1b8955bc5ac575 kernel/time/sched_clock.c David Engraf 2017-02-17 220 /* update timeout for clock wrap */
2c8bd58812ee3d kernel/time/sched_clock.c Ahmed S. Darwish 2020-03-09 221 hrtimer_start(&sched_clock_timer, cd.wrap_kt,
2c8bd58812ee3d kernel/time/sched_clock.c Ahmed S. Darwish 2020-03-09 222 HRTIMER_MODE_REL_HARD);
1b8955bc5ac575 kernel/time/sched_clock.c David Engraf 2017-02-17 223 }
1b8955bc5ac575 kernel/time/sched_clock.c David Engraf 2017-02-17 224
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 225 r = rate;
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 226 if (r >= 4000000) {
92067440f1311d kernel/time/sched_clock.c Maciej W. Rozycki 2022-04-24 227 r = DIV_ROUND_CLOSEST(r, 1000000);
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 228 r_unit = 'M';
f4b62e1e113750 kernel/time/sched_clock.c Maciej W. Rozycki 2022-04-24 229 } else if (r >= 4000) {
92067440f1311d kernel/time/sched_clock.c Maciej W. Rozycki 2022-04-24 230 r = DIV_ROUND_CLOSEST(r, 1000);
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 231 r_unit = 'k';
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 232 } else {
2f0778afac79bd arch/arm/kernel/sched_clock.c Marc Zyngier 2011-12-15 233 r_unit = ' ';
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 234 }
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 235
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 236 /* Calculate the ns resolution of this counter */
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 237 res = cyc_to_ns(1ULL, new_mult, new_shift);
5ae8aabeaec3fe kernel/time/sched_clock.c Stephen Boyd 2014-02-17 238
a08ca5d1089da0 kernel/time/sched_clock.c Stephen Boyd 2013-07-18 239 pr_info("sched_clock: %u bits at %lu%cHz, resolution %lluns, wraps every %lluns\n",
a08ca5d1089da0 kernel/time/sched_clock.c Stephen Boyd 2013-07-18 240 bits, r, r_unit, res, wrap);
112f38a4a31668 arch/arm/kernel/sched_clock.c Russell King 2010-12-15 241
32fea568aec5b7 kernel/time/sched_clock.c Ingo Molnar 2015-03-27 242 /* Enable IRQ time accounting if we have a fast enough sched_clock() */
a42c362980430b arch/arm/kernel/sched_clock.c Russell King 2012-09-09 243 if (irqtime > 0 || (irqtime == -1 && rate >= 1000000))
a42c362980430b arch/arm/kernel/sched_clock.c Russell King 2012-09-09 244 enable_sched_clock_irqtime();
a42c362980430b arch/arm/kernel/sched_clock.c Russell King 2012-09-09 245
2707745533d6d3 kernel/time/sched_clock.c Paul Cercueil 2020-01-07 246 local_irq_restore(flags);
2707745533d6d3 kernel/time/sched_clock.c Paul Cercueil 2020-01-07 247
d75f773c86a2b8 kernel/time/sched_clock.c Sakari Ailus 2019-03-25 248 pr_debug("Registered %pS as sched_clock source\n", read);
2f0778afac79bd arch/arm/kernel/sched_clock.c Marc Zyngier 2011-12-15 249 }
2f0778afac79bd arch/arm/kernel/sched_clock.c Marc Zyngier 2011-12-15 250
:::::: The code at line 219 was first introduced by commit
:::::: 1b8955bc5ac575009835e371ae55e7f3af2197a9 timers, sched_clock: Update timeout for clock wrap
:::::: TO: David Engraf <david.engraf@sysgo.com>
:::::: CC: John Stultz <john.stultz@linaro.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
2026-01-13 9:06 kernel/time/sched_clock.c:219:13: sparse: sparse: dereference of noderef expression kernel test robot
@ 2026-01-13 14:01 ` Thomas Gleixner
2026-01-13 16:46 ` Thomas Gleixner
2026-01-13 16:47 ` [PATCH v2] " Thomas Gleixner
0 siblings, 2 replies; 6+ messages in thread
From: Thomas Gleixner @ 2026-01-13 14:01 UTC (permalink / raw)
To: kernel test robot, Nam Cao; +Cc: oe-kbuild-all, linux-kernel, Ingo Molnar
This dereference of sched_clock_timer::function was missed when the
hrtimer callback function pointer was marked private.
Fixes: 04257da0c99c ("hrtimers: Make callback function pointer private")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Closes: https://lore.kernel.org/oe-kbuild-all/202601131713.KsxhXQ0M-lkp@intel.com/
---
kernel/time/sched_clock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -215,7 +215,7 @@ void sched_clock_register(u64 (*read)(vo
update_clock_read_data(&rd);
- if (sched_clock_timer.function != NULL) {
+ if (ACCESS_PRIVATE(sched_clock_timer, function) != NULL)) {
/* update timeout for clock wrap */
hrtimer_start(&sched_clock_timer, cd.wrap_kt,
HRTIMER_MODE_REL_HARD);
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
2026-01-13 14:01 ` [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function Thomas Gleixner
@ 2026-01-13 16:46 ` Thomas Gleixner
2026-01-13 16:47 ` [PATCH v2] " Thomas Gleixner
1 sibling, 0 replies; 6+ messages in thread
From: Thomas Gleixner @ 2026-01-13 16:46 UTC (permalink / raw)
To: kernel test robot, Nam Cao; +Cc: oe-kbuild-all, linux-kernel, Ingo Molnar
On Tue, Jan 13 2026 at 15:01, Thomas Gleixner wrote:
> + if (ACCESS_PRIVATE(sched_clock_timer, function) != NULL)) {
Bah. Sent the draft not the real thing.
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
2026-01-13 14:01 ` [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function Thomas Gleixner
2026-01-13 16:46 ` Thomas Gleixner
@ 2026-01-13 16:47 ` Thomas Gleixner
2026-01-13 17:15 ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2026-01-14 8:56 ` [PATCH v2] " Nam Cao
1 sibling, 2 replies; 6+ messages in thread
From: Thomas Gleixner @ 2026-01-13 16:47 UTC (permalink / raw)
To: kernel test robot, Nam Cao; +Cc: oe-kbuild-all, linux-kernel, Ingo Molnar
This dereference of sched_clock_timer::function was missed when the
hrtimer callback function pointer was marked private.
Fixes: 04257da0c99c ("hrtimers: Make callback function pointer private")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Closes: https://lore.kernel.org/oe-kbuild-all/202601131713.KsxhXQ0M-lkp@intel.com/
---
V2: Send the actually functional variant...
---
kernel/time/sched_clock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -215,7 +215,7 @@ void sched_clock_register(u64 (*read)(vo
update_clock_read_data(&rd);
- if (sched_clock_timer.function != NULL) {
+ if (ACCESS_PRIVATE(&sched_clock_timer, function) != NULL) {
/* update timeout for clock wrap */
hrtimer_start(&sched_clock_timer, cd.wrap_kt,
HRTIMER_MODE_REL_HARD);
^ permalink raw reply [flat|nested] 6+ messages in thread* [tip: timers/core] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
2026-01-13 16:47 ` [PATCH v2] " Thomas Gleixner
@ 2026-01-13 17:15 ` tip-bot2 for Thomas Gleixner
2026-01-14 8:56 ` [PATCH v2] " Nam Cao
1 sibling, 0 replies; 6+ messages in thread
From: tip-bot2 for Thomas Gleixner @ 2026-01-13 17:15 UTC (permalink / raw)
To: linux-tip-commits; +Cc: kernel test robot, Thomas Gleixner, x86, linux-kernel
The following commit has been merged into the timers/core branch of tip:
Commit-ID: 3db5306b0bd562ac0fe7eddad26c60ebb6f5fdd4
Gitweb: https://git.kernel.org/tip/3db5306b0bd562ac0fe7eddad26c60ebb6f5fdd4
Author: Thomas Gleixner <tglx@kernel.org>
AuthorDate: Tue, 13 Jan 2026 17:47:37 +01:00
Committer: Thomas Gleixner <tglx@kernel.org>
CommitterDate: Tue, 13 Jan 2026 18:08:57 +01:00
time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
This dereference of sched_clock_timer::function was missed when the
hrtimer callback function pointer was marked private.
Fixes: 04257da0c99c ("hrtimers: Make callback function pointer private")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/875x95jw7q.ffs@tglx
Closes: https://lore.kernel.org/oe-kbuild-all/202601131713.KsxhXQ0M-lkp@intel.com/
---
kernel/time/sched_clock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index f391118..f3aaef6 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -215,7 +215,7 @@ void sched_clock_register(u64 (*read)(void), int bits, unsigned long rate)
update_clock_read_data(&rd);
- if (sched_clock_timer.function != NULL) {
+ if (ACCESS_PRIVATE(&sched_clock_timer, function) != NULL) {
/* update timeout for clock wrap */
hrtimer_start(&sched_clock_timer, cd.wrap_kt,
HRTIMER_MODE_REL_HARD);
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function
2026-01-13 16:47 ` [PATCH v2] " Thomas Gleixner
2026-01-13 17:15 ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
@ 2026-01-14 8:56 ` Nam Cao
1 sibling, 0 replies; 6+ messages in thread
From: Nam Cao @ 2026-01-14 8:56 UTC (permalink / raw)
To: Thomas Gleixner, kernel test robot
Cc: oe-kbuild-all, linux-kernel, Ingo Molnar
Thomas Gleixner <tglx@kernel.org> writes:
> This dereference of sched_clock_timer::function was missed when the
> hrtimer callback function pointer was marked private.
>
> Fixes: 04257da0c99c ("hrtimers: Make callback function pointer private")
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Thomas Gleixner <tglx@kernel.org>
> Closes: https://lore.kernel.org/oe-kbuild-all/202601131713.KsxhXQ0M-lkp@intel.com/
Acked-by: Nam Cao <namcao@linutronix.de>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-01-14 8:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-13 9:06 kernel/time/sched_clock.c:219:13: sparse: sparse: dereference of noderef expression kernel test robot
2026-01-13 14:01 ` [PATCH] time/sched_clock: Use ACCESS_PRIVATE() to evaluate hrtimer::function Thomas Gleixner
2026-01-13 16:46 ` Thomas Gleixner
2026-01-13 16:47 ` [PATCH v2] " Thomas Gleixner
2026-01-13 17:15 ` [tip: timers/core] " tip-bot2 for Thomas Gleixner
2026-01-14 8:56 ` [PATCH v2] " Nam Cao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox