From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4D35441C95 for ; Tue, 14 Feb 2023 14:12:34 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4161F42DA4; Tue, 14 Feb 2023 14:12:34 +0100 (CET) Received: from agw.arknetworks.am (agw.arknetworks.am [79.141.165.80]) by mails.dpdk.org (Postfix) with ESMTP id 13CD4410D1; Tue, 14 Feb 2023 14:12:32 +0100 (CET) Received: from localhost.localdomain (unknown [78.109.66.163]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by agw.arknetworks.am (Postfix) with ESMTPSA id 5E134E12D3; Tue, 14 Feb 2023 17:12:31 +0400 (+04) From: Ivan Malov To: dev@dpdk.org Cc: Andrew Rybchenko , Pavel Martynov , stable@dpdk.org, Viacheslav Galaktionov , Andy Moreton Subject: [PATCH] net/sfc: enforce fate action in transfer flow rules Date: Tue, 14 Feb 2023 17:12:47 +0400 Message-Id: <20230214131247.7189-1-ivan.malov@arknetworks.am> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org According to DPDK documentation, not specifying a fate action in a flow rule results in undefined behaviour. Define right behaviour in the driver. Fixes: 0839236d0391 ("net/sfc: support flow action drop in transfer rules") Cc: stable@dpdk.org Signed-off-by: Ivan Malov Reviewed-by: Viacheslav Galaktionov Reviewed-by: Andy Moreton --- drivers/net/sfc/sfc_mae.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index c254562696..3daeed81b9 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -3910,6 +3910,21 @@ sfc_mae_rule_parse_actions(struct sfc_adapter *sa, SFC_ASSERT(B_FALSE); } + /* + * A DPDK flow entry must specify a fate action, which the parser + * converts into a DELIVER action in a libefx action set. An + * attempt to replace the action in the action set should + * fail. If it succeeds then report an error, as the + * parsed flow entry did not contain a fate action. + */ + rc = efx_mae_action_set_populate_drop(ctx.spec); + if (rc == 0) { + rc = rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "no fate action found"); + goto fail_check_fate_action; + } + spec_mae->action_set = sfc_mae_action_set_attach(sa, &ctx); if (spec_mae->action_set != NULL) { sfc_mae_mac_addr_del(sa, ctx.src_mac); @@ -3926,6 +3941,7 @@ sfc_mae_rule_parse_actions(struct sfc_adapter *sa, return 0; fail_action_set_add: +fail_check_fate_action: fail_workaround_tunnel_delivery: fail_nb_count: sfc_mae_encap_header_del(sa, ctx.encap_header); -- 2.17.1