arch/x86/events/amd/power.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
do_div() truncates a u64 divisor to 32 bit.
This can lead to non-zero being truncated to zero for division.
Fix coccinelle warning
WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead
Signed-off-by: Jules Irenge <jbi.octave@gmail.com>
---
arch/x86/events/amd/power.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/events/amd/power.c b/arch/x86/events/amd/power.c
index 37d5b380516e..ff003c1a645b 100644
--- a/arch/x86/events/amd/power.c
+++ b/arch/x86/events/amd/power.c
@@ -64,7 +64,7 @@ static void event_update(struct perf_event *event)
delta *= cpu_pwr_sample_ratio * 1000;
tdelta = new_ptsc - prev_ptsc;
- do_div(delta, tdelta);
+ div64_u64(delta, tdelta);
local64_add(delta, &event->count);
}
--
2.43.2
From: Jules Irenge <jbi.octave@gmail.com> > Sent: 28 April 2024 17:40 > > do_div() truncates a u64 divisor to 32 bit. > This can lead to non-zero being truncated to zero for division. > > Fix coccinelle warning > WARNING: do_div() does a 64-by-32 division, please consider using div64_u64 instead > > Signed-off-by: Jules Irenge <jbi.octave@gmail.com> > --- > arch/x86/events/amd/power.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/events/amd/power.c b/arch/x86/events/amd/power.c > index 37d5b380516e..ff003c1a645b 100644 > --- a/arch/x86/events/amd/power.c > +++ b/arch/x86/events/amd/power.c > @@ -64,7 +64,7 @@ static void event_update(struct perf_event *event) > delta *= cpu_pwr_sample_ratio * 1000; > tdelta = new_ptsc - prev_ptsc; > > - do_div(delta, tdelta); > + div64_u64(delta, tdelta); Nak - you've not tested it. David > local64_add(delta, &event->count); > } > > -- > 2.43.2 > - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
© 2016 - 2025 Red Hat, Inc.