ring: fix error return value when creating ring

Message ID 6d7c9da7eb47cb236710a870d91219f1c3ca4684.1641785123.git.wangyunjian@huawei.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series ring: fix error return value when creating ring |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-abi-testing warning Testing issues
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS

Commit Message

Yunjian Wang Jan. 10, 2022, 9:23 a.m. UTC
  The error value returned by rte_ring_create_elem() should be positive
integers. However, if the rte_ring_get_memsize_elem() function fails,
a negative number is returned and is directly used as the return value.
As a result, this will cause the external call to check the return
value to fail(like called by rte_mempool_create()).

Fixes: a182620042aa ("ring: get size in memory")
Cc: stable@dpdk.org

Reported-by: Nan Zhou <zhounan14@huawei.com>
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 lib/ring/rte_ring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Ananyev, Konstantin Jan. 10, 2022, 2:11 p.m. UTC | #1
> The error value returned by rte_ring_create_elem() should be positive
> integers. However, if the rte_ring_get_memsize_elem() function fails,
> a negative number is returned and is directly used as the return value.
> As a result, this will cause the external call to check the return
> value to fail(like called by rte_mempool_create()).
> 
> Fixes: a182620042aa ("ring: get size in memory")
> Cc: stable@dpdk.org
> 
> Reported-by: Nan Zhou <zhounan14@huawei.com>
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> ---
>  lib/ring/rte_ring.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/ring/rte_ring.c b/lib/ring/rte_ring.c
> index f17bd966be..185f9be798 100644
> --- a/lib/ring/rte_ring.c
> +++ b/lib/ring/rte_ring.c
> @@ -267,7 +267,7 @@ rte_ring_create_elem(const char *name, unsigned int esize, unsigned int count,
> 
>  	ring_size = rte_ring_get_memsize_elem(esize, count);
>  	if (ring_size < 0) {
> -		rte_errno = ring_size;
> +		rte_errno = -ring_size;
>  		return NULL;
>  	}
> 
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

> 2.27.0
  
David Marchand Feb. 5, 2022, 5:04 p.m. UTC | #2
On Mon, Jan 10, 2022 at 3:15 PM Ananyev, Konstantin
<konstantin.ananyev@intel.com> wrote:
>
> > The error value returned by rte_ring_create_elem() should be positive
> > integers. However, if the rte_ring_get_memsize_elem() function fails,
> > a negative number is returned and is directly used as the return value.
> > As a result, this will cause the external call to check the return
> > value to fail(like called by rte_mempool_create()).
> >
> > Fixes: a182620042aa ("ring: get size in memory")
> > Cc: stable@dpdk.org
> >
> > Reported-by: Nan Zhou <zhounan14@huawei.com>
> > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

Applied, thanks.
  

Patch

diff --git a/lib/ring/rte_ring.c b/lib/ring/rte_ring.c
index f17bd966be..185f9be798 100644
--- a/lib/ring/rte_ring.c
+++ b/lib/ring/rte_ring.c
@@ -267,7 +267,7 @@  rte_ring_create_elem(const char *name, unsigned int esize, unsigned int count,
 
 	ring_size = rte_ring_get_memsize_elem(esize, count);
 	if (ring_size < 0) {
-		rte_errno = ring_size;
+		rte_errno = -ring_size;
 		return NULL;
 	}