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: [email protected]
Signed-off-by: Ophir Munk <[email protected]>
---
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