[dpdk-dev] memzone: Check socket_id value when creating memzone.

Message ID 1494569023-7564-1-git-send-email-nic@opencloud.tech (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

nickcooper-zhangtonghao May 12, 2017, 6:03 a.m. UTC
  If the socket_id is invalid (e.g. -2, -3), the
memzone_reserve_aligned_thread_unsafe should return the
EINVAL and not ENOMEM. To avoid it, we should check the
socket_id before calling malloc_heap_alloc.

Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
---
 lib/librte_eal/common/eal_common_memzone.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Bruce Richardson May 12, 2017, 8:42 a.m. UTC | #1
On Thu, May 11, 2017 at 11:03:43PM -0700, Tonghao Zhang wrote:
> If the socket_id is invalid (e.g. -2, -3), the
> memzone_reserve_aligned_thread_unsafe should return the
> EINVAL and not ENOMEM. To avoid it, we should check the
> socket_id before calling malloc_heap_alloc.
> 
> Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
> ---
>  lib/librte_eal/common/eal_common_memzone.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
> index 64f4e0a..3026e36 100644
> --- a/lib/librte_eal/common/eal_common_memzone.c
> +++ b/lib/librte_eal/common/eal_common_memzone.c
> @@ -189,7 +189,8 @@
>  		return NULL;
>  	}
>  
> -	if ((socket_id != SOCKET_ID_ANY) && (socket_id >= RTE_MAX_NUMA_NODES)) {
> +	if ((socket_id != SOCKET_ID_ANY) &&
> +	    (socket_id >= RTE_MAX_NUMA_NODES || socket_id < 0)) {
>  		rte_errno = EINVAL;
>  		return NULL;
>  	}
> -- 

Looks a sensible thing to do.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  
nickcooper-zhangtonghao May 17, 2017, 12:31 a.m. UTC | #2
> On May 12, 2017, at 4:42 PM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Thu, May 11, 2017 at 11:03:43PM -0700, Tonghao Zhang wrote:
>> If the socket_id is invalid (e.g. -2, -3), the
>> memzone_reserve_aligned_thread_unsafe should return the
>> EINVAL and not ENOMEM. To avoid it, we should check the
>> socket_id before calling malloc_heap_alloc.
>> 
>> Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
>> ---
>> lib/librte_eal/common/eal_common_memzone.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>> 
>> diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
>> index 64f4e0a..3026e36 100644
>> --- a/lib/librte_eal/common/eal_common_memzone.c
>> +++ b/lib/librte_eal/common/eal_common_memzone.c
>> @@ -189,7 +189,8 @@
>> 		return NULL;
>> 	}
>> 
>> -	if ((socket_id != SOCKET_ID_ANY) && (socket_id >= RTE_MAX_NUMA_NODES)) {
>> +	if ((socket_id != SOCKET_ID_ANY) &&
>> +	    (socket_id >= RTE_MAX_NUMA_NODES || socket_id < 0)) {
>> 		rte_errno = EINVAL;
>> 		return NULL;
>> 	}
>> -- 
> 
> Looks a sensible thing to do.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com <mailto:bruce.richardson@intel.com>>


Thanks for your review.
  
nickcooper-zhangtonghao June 1, 2017, 1:24 a.m. UTC | #3
If that patch is ok, will we apply it to master?
Thanks.
Nick

> On May 12, 2017, at 4:42 PM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Thu, May 11, 2017 at 11:03:43PM -0700, Tonghao Zhang wrote:
>> If the socket_id is invalid (e.g. -2, -3), the
>> memzone_reserve_aligned_thread_unsafe should return the
>> EINVAL and not ENOMEM. To avoid it, we should check the
>> socket_id before calling malloc_heap_alloc.
>> 
>> Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
>> ---
>> lib/librte_eal/common/eal_common_memzone.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>> 
>> diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
>> index 64f4e0a..3026e36 100644
>> --- a/lib/librte_eal/common/eal_common_memzone.c
>> +++ b/lib/librte_eal/common/eal_common_memzone.c
>> @@ -189,7 +189,8 @@
>> 		return NULL;
>> 	}
>> 
>> -	if ((socket_id != SOCKET_ID_ANY) && (socket_id >= RTE_MAX_NUMA_NODES)) {
>> +	if ((socket_id != SOCKET_ID_ANY) &&
>> +	    (socket_id >= RTE_MAX_NUMA_NODES || socket_id < 0)) {
>> 		rte_errno = EINVAL;
>> 		return NULL;
>> 	}
>> -- 
> 
> Looks a sensible thing to do.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com <mailto:bruce.richardson@intel.com>>
  
Thomas Monjalon June 5, 2017, 4:24 p.m. UTC | #4
12/05/2017 10:42, Bruce Richardson:
> On Thu, May 11, 2017 at 11:03:43PM -0700, Tonghao Zhang wrote:
> > If the socket_id is invalid (e.g. -2, -3), the
> > memzone_reserve_aligned_thread_unsafe should return the
> > EINVAL and not ENOMEM. To avoid it, we should check the
> > socket_id before calling malloc_heap_alloc.
> > 
> > Signed-off-by: Tonghao Zhang <nic@opencloud.tech>
> 
> Looks a sensible thing to do.
> 
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c
index 64f4e0a..3026e36 100644
--- a/lib/librte_eal/common/eal_common_memzone.c
+++ b/lib/librte_eal/common/eal_common_memzone.c
@@ -189,7 +189,8 @@ 
 		return NULL;
 	}
 
-	if ((socket_id != SOCKET_ID_ANY) && (socket_id >= RTE_MAX_NUMA_NODES)) {
+	if ((socket_id != SOCKET_ID_ANY) &&
+	    (socket_id >= RTE_MAX_NUMA_NODES || socket_id < 0)) {
 		rte_errno = EINVAL;
 		return NULL;
 	}