* [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value @ 2019-04-26 8:44 David Hunt 2019-04-26 8:44 ` David Hunt 2019-04-26 10:29 ` Burakov, Anatoly 0 siblings, 2 replies; 12+ messages in thread From: David Hunt @ 2019-04-26 8:44 UTC (permalink / raw) To: dev; +Cc: david.hunt, stable Coverity complains about the return of a value that may possibly overflow because of a multiply. Limit the value so it cannot overflow. Coverity issue: 337677 Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") CC: stable@dpdk.org Signed-off-by: David Hunt <david.hunt@intel.com> --- examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/vm_power_manager/oob_monitor_x86.c b/examples/vm_power_manager/oob_monitor_x86.c index ebd96b205..2074eec1e 100644 --- a/examples/vm_power_manager/oob_monitor_x86.c +++ b/examples/vm_power_manager/oob_monitor_x86.c @@ -99,7 +99,10 @@ apply_policy(int core) return -1.0; } - ratio = (float)miss_diff * (float)100 / (float)hits_diff; + ratio = (float)miss_diff / (float)hits_diff; + if (ratio > 1.0) + ratio = 1.0; + ratio *= 100.0f; if (ratio < ci->branch_ratio_threshold) power_manager_scale_core_min(core); -- 2.17.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 8:44 [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value David Hunt @ 2019-04-26 8:44 ` David Hunt 2019-04-26 10:29 ` Burakov, Anatoly 1 sibling, 0 replies; 12+ messages in thread From: David Hunt @ 2019-04-26 8:44 UTC (permalink / raw) To: dev; +Cc: david.hunt, stable Coverity complains about the return of a value that may possibly overflow because of a multiply. Limit the value so it cannot overflow. Coverity issue: 337677 Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") CC: stable@dpdk.org Signed-off-by: David Hunt <david.hunt@intel.com> --- examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/vm_power_manager/oob_monitor_x86.c b/examples/vm_power_manager/oob_monitor_x86.c index ebd96b205..2074eec1e 100644 --- a/examples/vm_power_manager/oob_monitor_x86.c +++ b/examples/vm_power_manager/oob_monitor_x86.c @@ -99,7 +99,10 @@ apply_policy(int core) return -1.0; } - ratio = (float)miss_diff * (float)100 / (float)hits_diff; + ratio = (float)miss_diff / (float)hits_diff; + if (ratio > 1.0) + ratio = 1.0; + ratio *= 100.0f; if (ratio < ci->branch_ratio_threshold) power_manager_scale_core_min(core); -- 2.17.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 8:44 [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value David Hunt 2019-04-26 8:44 ` David Hunt @ 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 10:29 ` Burakov, Anatoly ` (2 more replies) 1 sibling, 3 replies; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 10:29 UTC (permalink / raw) To: David Hunt, dev; +Cc: stable On 26-Apr-19 9:44 AM, David Hunt wrote: > Coverity complains about the return of a value that may > possibly overflow because of a multiply. Limit the value > so it cannot overflow. > > Coverity issue: 337677 > Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") > CC: stable@dpdk.org > Signed-off-by: David Hunt <david.hunt@intel.com> > --- > examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/examples/vm_power_manager/oob_monitor_x86.c b/examples/vm_power_manager/oob_monitor_x86.c > index ebd96b205..2074eec1e 100644 > --- a/examples/vm_power_manager/oob_monitor_x86.c > +++ b/examples/vm_power_manager/oob_monitor_x86.c > @@ -99,7 +99,10 @@ apply_policy(int core) > return -1.0; > } > > - ratio = (float)miss_diff * (float)100 / (float)hits_diff; > + ratio = (float)miss_diff / (float)hits_diff; > + if (ratio > 1.0) > + ratio = 1.0; > + ratio *= 100.0f; It should probably be the other way around - multiply first, then clamp. Also, please use RTE_MIN. > > if (ratio < ci->branch_ratio_threshold) > power_manager_scale_core_min(core); > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 10:29 ` Burakov, Anatoly @ 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 11:14 ` Hunt, David 2019-04-26 13:50 ` Hunt, David 2 siblings, 0 replies; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 10:29 UTC (permalink / raw) To: David Hunt, dev; +Cc: stable On 26-Apr-19 9:44 AM, David Hunt wrote: > Coverity complains about the return of a value that may > possibly overflow because of a multiply. Limit the value > so it cannot overflow. > > Coverity issue: 337677 > Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") > CC: stable@dpdk.org > Signed-off-by: David Hunt <david.hunt@intel.com> > --- > examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/examples/vm_power_manager/oob_monitor_x86.c b/examples/vm_power_manager/oob_monitor_x86.c > index ebd96b205..2074eec1e 100644 > --- a/examples/vm_power_manager/oob_monitor_x86.c > +++ b/examples/vm_power_manager/oob_monitor_x86.c > @@ -99,7 +99,10 @@ apply_policy(int core) > return -1.0; > } > > - ratio = (float)miss_diff * (float)100 / (float)hits_diff; > + ratio = (float)miss_diff / (float)hits_diff; > + if (ratio > 1.0) > + ratio = 1.0; > + ratio *= 100.0f; It should probably be the other way around - multiply first, then clamp. Also, please use RTE_MIN. > > if (ratio < ci->branch_ratio_threshold) > power_manager_scale_core_min(core); > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 10:29 ` Burakov, Anatoly @ 2019-04-26 11:14 ` Hunt, David 2019-04-26 11:14 ` Hunt, David 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 13:50 ` Hunt, David 2 siblings, 2 replies; 12+ messages in thread From: Hunt, David @ 2019-04-26 11:14 UTC (permalink / raw) To: Burakov, Anatoly, dev; +Cc: stable Hi Anatoly, On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: > On 26-Apr-19 9:44 AM, David Hunt wrote: >> Coverity complains about the return of a value that may >> possibly overflow because of a multiply. Limit the value >> so it cannot overflow. >> >> Coverity issue: 337677 >> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >> CC: stable@dpdk.org >> Signed-off-by: David Hunt <david.hunt@intel.com> >> --- >> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >> b/examples/vm_power_manager/oob_monitor_x86.c >> index ebd96b205..2074eec1e 100644 >> --- a/examples/vm_power_manager/oob_monitor_x86.c >> +++ b/examples/vm_power_manager/oob_monitor_x86.c >> @@ -99,7 +99,10 @@ apply_policy(int core) >> return -1.0; >> } >> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >> + ratio = (float)miss_diff / (float)hits_diff; >> + if (ratio > 1.0) >> + ratio = 1.0; >> + ratio *= 100.0f; > > It should probably be the other way around - multiply first, then > clamp. Also, please use RTE_MIN. > I tried that, but coverity still sees an overflow condition. I need to clamp first, then multiply. Then coverity is happy. Also, do you really want me to change to use RTE_MIN? I honestly prefer the code as it is. >> if (ratio < ci->branch_ratio_threshold) >> power_manager_scale_core_min(core); >> > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 11:14 ` Hunt, David @ 2019-04-26 11:14 ` Hunt, David 2019-04-26 12:03 ` Burakov, Anatoly 1 sibling, 0 replies; 12+ messages in thread From: Hunt, David @ 2019-04-26 11:14 UTC (permalink / raw) To: Burakov, Anatoly, dev; +Cc: stable Hi Anatoly, On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: > On 26-Apr-19 9:44 AM, David Hunt wrote: >> Coverity complains about the return of a value that may >> possibly overflow because of a multiply. Limit the value >> so it cannot overflow. >> >> Coverity issue: 337677 >> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >> CC: stable@dpdk.org >> Signed-off-by: David Hunt <david.hunt@intel.com> >> --- >> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >> b/examples/vm_power_manager/oob_monitor_x86.c >> index ebd96b205..2074eec1e 100644 >> --- a/examples/vm_power_manager/oob_monitor_x86.c >> +++ b/examples/vm_power_manager/oob_monitor_x86.c >> @@ -99,7 +99,10 @@ apply_policy(int core) >> return -1.0; >> } >> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >> + ratio = (float)miss_diff / (float)hits_diff; >> + if (ratio > 1.0) >> + ratio = 1.0; >> + ratio *= 100.0f; > > It should probably be the other way around - multiply first, then > clamp. Also, please use RTE_MIN. > I tried that, but coverity still sees an overflow condition. I need to clamp first, then multiply. Then coverity is happy. Also, do you really want me to change to use RTE_MIN? I honestly prefer the code as it is. >> if (ratio < ci->branch_ratio_threshold) >> power_manager_scale_core_min(core); >> > > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 11:14 ` Hunt, David 2019-04-26 11:14 ` Hunt, David @ 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:35 ` Burakov, Anatoly 1 sibling, 2 replies; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 12:03 UTC (permalink / raw) To: Hunt, David, dev; +Cc: stable On 26-Apr-19 12:14 PM, Hunt, David wrote: > Hi Anatoly, > > On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: >> On 26-Apr-19 9:44 AM, David Hunt wrote: >>> Coverity complains about the return of a value that may >>> possibly overflow because of a multiply. Limit the value >>> so it cannot overflow. >>> >>> Coverity issue: 337677 >>> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >>> CC: stable@dpdk.org >>> Signed-off-by: David Hunt <david.hunt@intel.com> >>> --- >>> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >>> b/examples/vm_power_manager/oob_monitor_x86.c >>> index ebd96b205..2074eec1e 100644 >>> --- a/examples/vm_power_manager/oob_monitor_x86.c >>> +++ b/examples/vm_power_manager/oob_monitor_x86.c >>> @@ -99,7 +99,10 @@ apply_policy(int core) >>> return -1.0; >>> } >>> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >>> + ratio = (float)miss_diff / (float)hits_diff; >>> + if (ratio > 1.0) >>> + ratio = 1.0; >>> + ratio *= 100.0f; >> >> It should probably be the other way around - multiply first, then >> clamp. Also, please use RTE_MIN. >> > I tried that, but coverity still sees an overflow condition. I need to > clamp first, then multiply. Then coverity is happy. That's weird. This may be a bug in Coverity then. Please correct me if i'm wrong, but floating point formats aren't precise, so by doing multiplication on a value that doesn't exceed 1.0, you may very well end up with a value that does exceed 100 by a tiny bit on account of floating point approximations, rounding errors etc. The question is, do we want correct code, or do we want to keep Coverity happy? :) I'll have a look at the coverity issue itself, maybe i'm missing something here... > > Also, do you really want me to change to use RTE_MIN? I honestly prefer > the code as it is. No strong opinion here. > > > >>> if (ratio < ci->branch_ratio_threshold) >>> power_manager_scale_core_min(core); >>> >> >> > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 12:03 ` Burakov, Anatoly @ 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:35 ` Burakov, Anatoly 1 sibling, 0 replies; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 12:03 UTC (permalink / raw) To: Hunt, David, dev; +Cc: stable On 26-Apr-19 12:14 PM, Hunt, David wrote: > Hi Anatoly, > > On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: >> On 26-Apr-19 9:44 AM, David Hunt wrote: >>> Coverity complains about the return of a value that may >>> possibly overflow because of a multiply. Limit the value >>> so it cannot overflow. >>> >>> Coverity issue: 337677 >>> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >>> CC: stable@dpdk.org >>> Signed-off-by: David Hunt <david.hunt@intel.com> >>> --- >>> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >>> b/examples/vm_power_manager/oob_monitor_x86.c >>> index ebd96b205..2074eec1e 100644 >>> --- a/examples/vm_power_manager/oob_monitor_x86.c >>> +++ b/examples/vm_power_manager/oob_monitor_x86.c >>> @@ -99,7 +99,10 @@ apply_policy(int core) >>> return -1.0; >>> } >>> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >>> + ratio = (float)miss_diff / (float)hits_diff; >>> + if (ratio > 1.0) >>> + ratio = 1.0; >>> + ratio *= 100.0f; >> >> It should probably be the other way around - multiply first, then >> clamp. Also, please use RTE_MIN. >> > I tried that, but coverity still sees an overflow condition. I need to > clamp first, then multiply. Then coverity is happy. That's weird. This may be a bug in Coverity then. Please correct me if i'm wrong, but floating point formats aren't precise, so by doing multiplication on a value that doesn't exceed 1.0, you may very well end up with a value that does exceed 100 by a tiny bit on account of floating point approximations, rounding errors etc. The question is, do we want correct code, or do we want to keep Coverity happy? :) I'll have a look at the coverity issue itself, maybe i'm missing something here... > > Also, do you really want me to change to use RTE_MIN? I honestly prefer > the code as it is. No strong opinion here. > > > >>> if (ratio < ci->branch_ratio_threshold) >>> power_manager_scale_core_min(core); >>> >> >> > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:03 ` Burakov, Anatoly @ 2019-04-26 12:35 ` Burakov, Anatoly 2019-04-26 12:35 ` Burakov, Anatoly 1 sibling, 1 reply; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 12:35 UTC (permalink / raw) To: Hunt, David, dev; +Cc: stable On 26-Apr-19 1:03 PM, Burakov, Anatoly wrote: > On 26-Apr-19 12:14 PM, Hunt, David wrote: >> Hi Anatoly, >> >> On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: >>> On 26-Apr-19 9:44 AM, David Hunt wrote: >>>> Coverity complains about the return of a value that may >>>> possibly overflow because of a multiply. Limit the value >>>> so it cannot overflow. >>>> >>>> Coverity issue: 337677 >>>> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >>>> CC: stable@dpdk.org >>>> Signed-off-by: David Hunt <david.hunt@intel.com> >>>> --- >>>> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >>>> b/examples/vm_power_manager/oob_monitor_x86.c >>>> index ebd96b205..2074eec1e 100644 >>>> --- a/examples/vm_power_manager/oob_monitor_x86.c >>>> +++ b/examples/vm_power_manager/oob_monitor_x86.c >>>> @@ -99,7 +99,10 @@ apply_policy(int core) >>>> return -1.0; >>>> } >>>> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >>>> + ratio = (float)miss_diff / (float)hits_diff; >>>> + if (ratio > 1.0) >>>> + ratio = 1.0; >>>> + ratio *= 100.0f; >>> >>> It should probably be the other way around - multiply first, then >>> clamp. Also, please use RTE_MIN. >>> >> I tried that, but coverity still sees an overflow condition. I need to >> clamp first, then multiply. Then coverity is happy. > > That's weird. This may be a bug in Coverity then. Please correct me if > i'm wrong, but floating point formats aren't precise, so by doing > multiplication on a value that doesn't exceed 1.0, you may very well end > up with a value that does exceed 100 by a tiny bit on account of > floating point approximations, rounding errors etc. > > The question is, do we want correct code, or do we want to keep Coverity > happy? :) I'll have a look at the coverity issue itself, maybe i'm > missing something here... > I think the real source of the problem is not that, and i believe there's something wrong with Coverity's analysis here. For some reason Coverity thinks that multiplying two floating point values (100f and miss_diff converted to float) will result in /integer/ overflow (lolwut?), *and* it assumes that miss_diff is negative at that point when it *can't* be, because if miss_diff was negative, we would've done an early exit on line 77. My guess is, this is the culprit: "overflow: Multiply operation overflows on operands (float)miss_diff and 100f. Example values for operands: *100f = 268435456*, (float)miss_diff = -2147483648." The "100f = 268435456" part makes me suspect that Coverity somehow thinks that "100f" is a variable name? >> >> Also, do you really want me to change to use RTE_MIN? I honestly >> prefer the code as it is. > > No strong opinion here. > >> >> >> >>>> if (ratio < ci->branch_ratio_threshold) >>>> power_manager_scale_core_min(core); >>>> >>> >>> >> > > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 12:35 ` Burakov, Anatoly @ 2019-04-26 12:35 ` Burakov, Anatoly 0 siblings, 0 replies; 12+ messages in thread From: Burakov, Anatoly @ 2019-04-26 12:35 UTC (permalink / raw) To: Hunt, David, dev; +Cc: stable On 26-Apr-19 1:03 PM, Burakov, Anatoly wrote: > On 26-Apr-19 12:14 PM, Hunt, David wrote: >> Hi Anatoly, >> >> On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: >>> On 26-Apr-19 9:44 AM, David Hunt wrote: >>>> Coverity complains about the return of a value that may >>>> possibly overflow because of a multiply. Limit the value >>>> so it cannot overflow. >>>> >>>> Coverity issue: 337677 >>>> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >>>> CC: stable@dpdk.org >>>> Signed-off-by: David Hunt <david.hunt@intel.com> >>>> --- >>>> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >>>> b/examples/vm_power_manager/oob_monitor_x86.c >>>> index ebd96b205..2074eec1e 100644 >>>> --- a/examples/vm_power_manager/oob_monitor_x86.c >>>> +++ b/examples/vm_power_manager/oob_monitor_x86.c >>>> @@ -99,7 +99,10 @@ apply_policy(int core) >>>> return -1.0; >>>> } >>>> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >>>> + ratio = (float)miss_diff / (float)hits_diff; >>>> + if (ratio > 1.0) >>>> + ratio = 1.0; >>>> + ratio *= 100.0f; >>> >>> It should probably be the other way around - multiply first, then >>> clamp. Also, please use RTE_MIN. >>> >> I tried that, but coverity still sees an overflow condition. I need to >> clamp first, then multiply. Then coverity is happy. > > That's weird. This may be a bug in Coverity then. Please correct me if > i'm wrong, but floating point formats aren't precise, so by doing > multiplication on a value that doesn't exceed 1.0, you may very well end > up with a value that does exceed 100 by a tiny bit on account of > floating point approximations, rounding errors etc. > > The question is, do we want correct code, or do we want to keep Coverity > happy? :) I'll have a look at the coverity issue itself, maybe i'm > missing something here... > I think the real source of the problem is not that, and i believe there's something wrong with Coverity's analysis here. For some reason Coverity thinks that multiplying two floating point values (100f and miss_diff converted to float) will result in /integer/ overflow (lolwut?), *and* it assumes that miss_diff is negative at that point when it *can't* be, because if miss_diff was negative, we would've done an early exit on line 77. My guess is, this is the culprit: "overflow: Multiply operation overflows on operands (float)miss_diff and 100f. Example values for operands: *100f = 268435456*, (float)miss_diff = -2147483648." The "100f = 268435456" part makes me suspect that Coverity somehow thinks that "100f" is a variable name? >> >> Also, do you really want me to change to use RTE_MIN? I honestly >> prefer the code as it is. > > No strong opinion here. > >> >> >> >>>> if (ratio < ci->branch_ratio_threshold) >>>> power_manager_scale_core_min(core); >>>> >>> >>> >> > > -- Thanks, Anatoly ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 11:14 ` Hunt, David @ 2019-04-26 13:50 ` Hunt, David 2019-04-26 13:50 ` Hunt, David 2 siblings, 1 reply; 12+ messages in thread From: Hunt, David @ 2019-04-26 13:50 UTC (permalink / raw) To: Burakov, Anatoly, dev; +Cc: stable On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: > On 26-Apr-19 9:44 AM, David Hunt wrote: >> Coverity complains about the return of a value that may >> possibly overflow because of a multiply. Limit the value >> so it cannot overflow. >> >> Coverity issue: 337677 >> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >> CC: stable@dpdk.org >> Signed-off-by: David Hunt <david.hunt@intel.com> >> --- >> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >> b/examples/vm_power_manager/oob_monitor_x86.c >> index ebd96b205..2074eec1e 100644 >> --- a/examples/vm_power_manager/oob_monitor_x86.c >> +++ b/examples/vm_power_manager/oob_monitor_x86.c >> @@ -99,7 +99,10 @@ apply_policy(int core) >> return -1.0; >> } >> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >> + ratio = (float)miss_diff / (float)hits_diff; >> + if (ratio > 1.0) >> + ratio = 1.0; >> + ratio *= 100.0f; > > It should probably be the other way around - multiply first, then > clamp. Also, please use RTE_MIN. > >> if (ratio < ci->branch_ratio_threshold) >> power_manager_scale_core_min(core); >> Anatoly and myself have spendt some time analysing the coverity issue just now, and we have come to the conclusion that it's a false positive. We also think it may be an issue with coverity, so for the moment I'll mark the coverity issue as a false positive. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value 2019-04-26 13:50 ` Hunt, David @ 2019-04-26 13:50 ` Hunt, David 0 siblings, 0 replies; 12+ messages in thread From: Hunt, David @ 2019-04-26 13:50 UTC (permalink / raw) To: Burakov, Anatoly, dev; +Cc: stable On 26/4/2019 11:29 AM, Burakov, Anatoly wrote: > On 26-Apr-19 9:44 AM, David Hunt wrote: >> Coverity complains about the return of a value that may >> possibly overflow because of a multiply. Limit the value >> so it cannot overflow. >> >> Coverity issue: 337677 >> Fixes: 4b1a631b8a ("examples/vm_power: add oob monitoring functions") >> CC: stable@dpdk.org >> Signed-off-by: David Hunt <david.hunt@intel.com> >> --- >> examples/vm_power_manager/oob_monitor_x86.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/examples/vm_power_manager/oob_monitor_x86.c >> b/examples/vm_power_manager/oob_monitor_x86.c >> index ebd96b205..2074eec1e 100644 >> --- a/examples/vm_power_manager/oob_monitor_x86.c >> +++ b/examples/vm_power_manager/oob_monitor_x86.c >> @@ -99,7 +99,10 @@ apply_policy(int core) >> return -1.0; >> } >> - ratio = (float)miss_diff * (float)100 / (float)hits_diff; >> + ratio = (float)miss_diff / (float)hits_diff; >> + if (ratio > 1.0) >> + ratio = 1.0; >> + ratio *= 100.0f; > > It should probably be the other way around - multiply first, then > clamp. Also, please use RTE_MIN. > >> if (ratio < ci->branch_ratio_threshold) >> power_manager_scale_core_min(core); >> Anatoly and myself have spendt some time analysing the coverity issue just now, and we have come to the conclusion that it's a false positive. We also think it may be an issue with coverity, so for the moment I'll mark the coverity issue as a false positive. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2019-04-26 13:50 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-26 8:44 [dpdk-dev] [PATCH v1] examples/vm_power_manager: fix overflowed return value David Hunt 2019-04-26 8:44 ` David Hunt 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 10:29 ` Burakov, Anatoly 2019-04-26 11:14 ` Hunt, David 2019-04-26 11:14 ` Hunt, David 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:03 ` Burakov, Anatoly 2019-04-26 12:35 ` Burakov, Anatoly 2019-04-26 12:35 ` Burakov, Anatoly 2019-04-26 13:50 ` Hunt, David 2019-04-26 13:50 ` Hunt, David
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).