net/mlx5: fix set VLAN vid size check

Message ID 20200430083103.10320-1-wisamm@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix set VLAN vid size check |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation fail Compilation issues
ci/iol-testing success Testing PASS

Commit Message

Wisam Jaddo April 30, 2020, 8:31 a.m. UTC
  All comparison should be done in CPU endianness, otherwise
it will not give right results.

for example:
255 after converting into RTE_BE16 will be biger than 4096 after
converting into RTE_BE16.

Fixes: a5f2da0b816b ("net/mlx5: support modify VLAN ID on new VLAN header")
Cc: motih@mellanox.com
Cc: stable@dpdk.org backport

Signed-off-by: Wisam Jaddo <wisamm@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Slava Ovsiienko April 30, 2020, 8:55 a.m. UTC | #1
> -----Original Message-----
> From: Wisam Monther <wisamm@mellanox.com>
> Sent: Thursday, April 30, 2020 11:31
> To: dev@dpdk.org; Dekel Peled <dekelp@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>; Raslan Darawsheh <rasland@mellanox.com>
> Cc: Moti Haimovsky <motih@mellanox.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix set VLAN vid size check
> 
> All comparison should be done in CPU endianness, otherwise it will not give
> right results.
> 
> for example:
> 255 after converting into RTE_BE16 will be biger than 4096 after converting
> into RTE_BE16.
> 
> Fixes: a5f2da0b816b ("net/mlx5: support modify VLAN ID on new VLAN
> header")
> Cc: motih@mellanox.com
> Cc: stable@dpdk.org backport
> 
> Signed-off-by: Wisam Jaddo <wisamm@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

> ---
>  drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c index 6263ecc731..2b88e85248 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -1965,7 +1965,7 @@ flow_dv_validate_action_set_vlan_vid(uint64_t
> item_flags,
>  	const struct rte_flow_action *action = actions;
>  	const struct rte_flow_action_of_set_vlan_vid *conf = action->conf;
> 
> -	if (conf->vlan_vid > RTE_BE16(0xFFE))
> +	if (rte_be_to_cpu_16(conf->vlan_vid) > 0xFFE)
>  		return rte_flow_error_set(error, EINVAL,
>  					  RTE_FLOW_ERROR_TYPE_ACTION,
> action,
>  					  "VLAN VID value is too big");
> --
> 2.17.1
  
Raslan Darawsheh May 4, 2020, 7:51 a.m. UTC | #2
Hi,

> -----Original Message-----
> From: Wisam Monther <wisamm@mellanox.com>
> Sent: Thursday, April 30, 2020 11:31 AM
> To: dev@dpdk.org; Dekel Peled <dekelp@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>; Raslan Darawsheh <rasland@mellanox.com>
> Cc: Moti Haimovsky <motih@mellanox.com>; stable@dpdk.org
> Subject: [PATCH] net/mlx5: fix set VLAN vid size check
> 
> All comparison should be done in CPU endianness, otherwise
> it will not give right results.
> 
> for example:
> 255 after converting into RTE_BE16 will be biger than 4096 after
> converting into RTE_BE16.
> 
> Fixes: a5f2da0b816b ("net/mlx5: support modify VLAN ID on new VLAN
> header")
> Cc: motih@mellanox.com
> Cc: stable@dpdk.org backport
> 
> Signed-off-by: Wisam Jaddo <wisamm@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_flow_dv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c
> b/drivers/net/mlx5/mlx5_flow_dv.c
> index 6263ecc731..2b88e85248 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -1965,7 +1965,7 @@ flow_dv_validate_action_set_vlan_vid(uint64_t
> item_flags,
>  	const struct rte_flow_action *action = actions;
>  	const struct rte_flow_action_of_set_vlan_vid *conf = action->conf;
> 
> -	if (conf->vlan_vid > RTE_BE16(0xFFE))
> +	if (rte_be_to_cpu_16(conf->vlan_vid) > 0xFFE)
>  		return rte_flow_error_set(error, EINVAL,
>  					  RTE_FLOW_ERROR_TYPE_ACTION,
> action,
>  					  "VLAN VID value is too big");
> --
> 2.17.1


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  

Patch

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 6263ecc731..2b88e85248 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -1965,7 +1965,7 @@  flow_dv_validate_action_set_vlan_vid(uint64_t item_flags,
 	const struct rte_flow_action *action = actions;
 	const struct rte_flow_action_of_set_vlan_vid *conf = action->conf;
 
-	if (conf->vlan_vid > RTE_BE16(0xFFE))
+	if (rte_be_to_cpu_16(conf->vlan_vid) > 0xFFE)
 		return rte_flow_error_set(error, EINVAL,
 					  RTE_FLOW_ERROR_TYPE_ACTION, action,
 					  "VLAN VID value is too big");