Re: [PATCH] mem: fix overflowed return value
From: Jastrzebski, MichalX K <hidden>
Date: 2016-06-28 08:06:27
-----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Mrzyglod, DanielX T Sent: Wednesday, June 08, 2016 1:41 PM To: Stephen Hemminger <stephen@networkplumber.org>; Kobylinski, MichalX [off-list ref] Cc: thomas.monjalon@6wind.com; dev@dpdk.org; david.marchand@6wind.com Subject: Re: [dpdk-dev] [PATCH] mem: fix overflowed return valuequoted
-----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of StephenHemmingerquoted
Sent: Friday, April 22, 2016 6:25 PM To: Kobylinski, MichalX <redacted> Cc: thomas.monjalon@6wind.com; dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH] mem: fix overflowed return value On Fri, 22 Apr 2016 12:44:18 +0200 Michal Kobylinski [off-list ref] wrote:quoted
Fix issue reported by Coverity. Coverity ID 13255: Overflowed return value: The return value will be too small or even negative, likely resulting in unexpected behavior in a caller that uses the return value. In rte_mem_virt2phy: An integer overflow occurs, with the overflowed value used as the return value of the function Fixes: 3097de6e6bfb ("mem: get physical address of any pointer") Signed-off-by: Michal Kobylinski <redacted> --- lib/librte_eal/linuxapp/eal/eal_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.cb/lib/librte_eal/linuxapp/eal/eal_memory.cquoted
index 5b9132c..6ceca5b 100644--- a/lib/librte_eal/linuxapp/eal/eal_memory.c +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c@@ -195,7 +195,7 @@ rte_mem_virt2phy(const void *virtaddr) * the pfn (page frame number) are bits 0-54 (see * pagemap.txt in linux Documentation) */ - physaddr = ((page & 0x7fffffffffffffULL) * page_size) + physaddr = (uint64_t)((page & 0x7fffffffffffffULL) * page_size) + ((unsigned long)virtaddr % page_size); close(fd); return physaddr;I am not trusting any of these Coverity patches you are sending. It seems you think wraparound can be just fixed by casting, it can'tFrom my point of view it's False Possitive there is no chance that page_size will be bigger than long. Coverity Assume that page_size may be 18446744071562067968 but it can't. Only for glibc<2.1 we probably should change page_size = getpagesize(); to page_size = sysconf(_SC_PAGESIZE); May I change this Coverity to False Positive or I missed something ? What's your opinion ?
Hi David, What is Your opinion about classifying this defect as false/positive? We would like to move forward with this work. Michal