When creating an RSS flow with missing actions parameters, for example:
flow create 0 ingress pattern <list of patterns>  / end actions rss / end

testpmd aborts with segmentation fault.
In the corrupted code mlx4_flow_prepare() accesses RSS action->conf pointer
without verifying its validity.
In case of missing RSS actions parameters this pointer is NULL and must not
 be accessed.
The fix is to return an error in such cases "missing rss actions".

Fixes: 078b8b452e6b ("net/mlx4: add RSS flow rule action support")
Cc: sta...@dpdk.org

Signed-off-by: Ophir Munk <ophi...@mellanox.com>
---
 drivers/net/mlx4/mlx4_flow.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index 2d55bfe..7a127a8 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -735,6 +735,10 @@ mlx4_flow_prepare(struct priv *priv,
                        if (flow->rss)
                                break;
                        rss = action->conf;
+                       if (!rss) {
+                               msg = "missing rss actions";
+                               goto exit_action_not_supported;
+                       }
                        /* Default RSS configuration if none is provided. */
                        rss_conf =
                                rss->rss_conf ?
-- 
2.7.4

Reply via email to