From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C5963A04B4; Wed, 26 Aug 2020 13:28:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CEAD94F9C; Wed, 26 Aug 2020 13:28:37 +0200 (CEST) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by dpdk.org (Postfix) with ESMTP id 482B34C89; Wed, 26 Aug 2020 13:28:36 +0200 (CEST) Received: from dpdk-test.liberouter.org (mt-kou.liberouter.org [195.113.172.85]) (authenticated bits=0) by eva.fit.vutbr.cz (8.16.1/8.16.1) with ESMTPSA id 07QBS4Ph033876 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 26 Aug 2020 13:28:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stud.fit.vutbr.cz; s=studfit; t=1598441296; bh=W1pzSmbhqV9EDRsGjgEti4txLd6Ltkb93PSyGorOpaA=; h=From:To:Cc:Subject:Date; b=HUvIFUAkFpIJsf/HuW01WlX45hvbfXyIr4v6mj6dU5oIpeiecdkbccVjyMVj5WIA0 3tJbW5JTuJDBdxNUoIysTHZRz5A2N8qCwNXt3TM9yCWA4S7Jne3622UepgHubSPJAN CG7IYHLNW90e49FpKOTqe5PkyToAvOByu2lgDfDE= From: Elena Carasec To: dev@dpdk.org Cc: Elena Carasec , stable@dpdk.org, Beilei Xing , Qi Zhang , Adrien Mazarguil , Andrew Rybchenko , Luca Boccassi , Jan Viktorin Date: Wed, 26 Aug 2020 11:28:01 +0000 Message-Id: <1598441281-11209-1-git-send-email-xcaras00@stud.fit.vutbr.cz> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] i40e: fix segfault when using custom RSS key X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" &out->conf and in can point to the same memory area. Reinitialization of out->conf leads to setting in->key to NULL, but leaves key_len 40. This leads to segfault on destruction of the RSS flow action. The segfault happens inside i40e_action_rss_same(), when comparing comp->key and with->key, because both comp->key_len and with->key_len are 40 (should be 0). Reproduction steps (testpmd): port stop 0 flow create 0 ingress pattern end actions rss func default level 0\ key 6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a6d5a\ key_len 40 queues 0 end / end port start 0 set link-up port 0 start stop set link-down port 0 port stop 0 flow destroy 0 rule 0 (Segmentation fault) Fixes: ac8d22de2394 ("ethdev: flatten RSS configuration in flow API") Signed-off-by: Elena Carasec Signed-off-by: Jan Viktorin --- drivers/net/i40e/i40e_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 11c02b1..a5fe130 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -13211,6 +13211,8 @@ struct i40e_customized_pctype* return -EINVAL; if (!in->key && in->key_len) return -EINVAL; + if (&out->conf == in) + return 0; out->conf = (struct rte_flow_action_rss){ .func = in->func, .level = in->level, -- 1.8.3.1