From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
To: dev@dpdk.org
Cc: rasland@nvidia.com, stable@dpdk.org,
Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Subject: [PATCH] net/mlx5: fix crash when using meter in transfer flow
Date: Wed, 2 Jul 2025 08:36:17 -0400 [thread overview]
Message-ID: <20250702123617.1814996-1-14pwcse1224@uetpeshawar.edu.pk> (raw)
When creating a flow rule with the transfer attribute and a meter action,
the driver did not validate this combination and would crash due to
unsupported handling.
This patch adds explicit validation rejecting meter action in transfer
flows with an appropriate error message.
Fixes: 46a5e6bc6a85 ("net/mlx5: prepare meter flow tables")
Cc: stable@dpdk.org
Steps to reproduce:
1. Launch testpmd:
./build/app/dpdk-testpmd -l 0,1 -a <PCI BDF> -- -i --rxq=8 --txq=8
2. Inside testpmd:
add port meter profile trtcm_rfc2698 0 0 5 10 50 100 1
add port meter policy 0 0 g_actions mark id 3 / queue index 2 / end /
y_actions mark id 7 / queue index 3 / end r_actions drop / end
create port meter 0 0 0 0 yes 0xffff 0 y 0
3. flow create 0 group 0 ingress pattern eth / ipv4 / end actions
jump group 1 / end
3. Following causes a segmentation fault:
flow create 0 transfer ingress pattern eth / ipv4 /
end actions meter mtr_id 0 / end
This patch ensures proper handling of the meter action with
transfer rule to prevent this crash.
Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
---
drivers/net/mlx5/mlx5_flow.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 8db372123c..a7b793ef29 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -7993,7 +7993,17 @@ mlx5_flow_create(struct rte_eth_dev *dev,
struct rte_flow_attr *new_attr = (void *)(uintptr_t)attr;
uint32_t prio = attr->priority;
uintptr_t flow_idx;
-
+ if (attr && attr->transfer) {
+ const struct rte_flow_action *act;
+ for (act = actions; act && act->type != RTE_FLOW_ACTION_TYPE_END; ++act) {
+ if (act->type == RTE_FLOW_ACTION_TYPE_METER) {
+ rte_flow_error_set(error, ENOTSUP,
+ RTE_FLOW_ERROR_TYPE_ACTION, act,
+ "Meter action is not supported in transfer flows");
+ return NULL;
+ }
+ }
+ }
/*
* If the device is not started yet, it is not allowed to created a
* flow from application. PMD default flows and traffic control flows
--
2.43.0
reply other threads:[~2025-07-02 12:36 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250702123617.1814996-1-14pwcse1224@uetpeshawar.edu.pk \
--to=14pwcse1224@uetpeshawar.edu.pk \
--cc=dev@dpdk.org \
--cc=rasland@nvidia.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).