From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <stable-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 09B8AA0093
	for <public@inbox.dpdk.org>; Fri, 22 May 2020 11:41:51 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id F31321D945;
	Fri, 22 May 2020 11:41:50 +0200 (CEST)
Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com
 [209.85.128.67]) by dpdk.org (Postfix) with ESMTP id B9D521D945
 for <stable@dpdk.org>; Fri, 22 May 2020 11:41:49 +0200 (CEST)
Received: by mail-wm1-f67.google.com with SMTP id n5so9202975wmd.0
 for <stable@dpdk.org>; Fri, 22 May 2020 02:41:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=9nPjjrEFyoicghRhpx/S9v/SBLVLisRLIJn3GuIT2CA=;
 b=Yr5Vpa1Dtthu08ulyQL6RVs3NwzZjjrniQgr5anyAsYepMcTj6WNpqc3TLwu5Cj4Ry
 ZVC2vL9rsXXKgXSFfZn5pCDmGAvUkXQvPR7wzx6If4iVRoWVZkATHSLcgRl49hd5TEqk
 N0K+xSEhWpi3+aE+y3SqMPtvbtdK9VR/MWFiCBWq/kGzM5tgpO7TPB0QBKoQvuK6Emr8
 WYY3ZEhpZOjSAHmPZ5Uyqgy7XdoJFmcNFmnEB6Mct5Nf0R/fgweZErxIlbwBO35HdjAu
 M8fmYYlO36DjqdnC036bZuv7q+84bStgvvJ5y2BeH2gRHxChWmwLTrrwY5Sto85RW2Uw
 VKdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=9nPjjrEFyoicghRhpx/S9v/SBLVLisRLIJn3GuIT2CA=;
 b=Na+6C6V/+MvynCpoDLMUb5h95ZEw74UVXLnfQKbDQvyz2Som9xPtXuHTRbbcqh3w3X
 9BIOsRaRuT8Z1eTHXD50dEoYxSgzujQmnwh1INkYXInMNg2IRqXzELEepqAx8467qocA
 Vt0vLTbfl7GmiMnVbkRfljUZHM1OvIbDD8rAFuEa7C/N1LziR6pDPqbi8Hm68v20yrr/
 i8Sb3gSAWo7yl291uar8IGTbYDrbE/P8cSnytNgC7VsPJiWTdXgZsftIgeCU5qF78JKt
 FvO5D5QiL9buORDzbc4hB5RoCapq4nczigqUMNUzivdVkV7P6IubzqIPQBt1kAi7slWO
 JP7w==
X-Gm-Message-State: AOAM5304/6VscXvog+W5kSQLTB5cZwj4R4LfQRfXnvqjB83fjzRAvheC
 0O0nNfpYYoFynJNBvegrWS4=
X-Google-Smtp-Source: ABdhPJx01Lm+/SSHk/KaWxM/2SxjTDSr9MshnByGiRqSkeYpzohmIXZTjsOqyw7YzV6EwzEk42xwvw==
X-Received: by 2002:a1c:7d02:: with SMTP id y2mr11607699wmc.92.1590140509482; 
 Fri, 22 May 2020 02:41:49 -0700 (PDT)
Received: from localhost ([88.98.246.218])
 by smtp.gmail.com with ESMTPSA id 81sm9757572wme.16.2020.05.22.02.41.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 22 May 2020 02:41:48 -0700 (PDT)
From: luca.boccassi@gmail.com
To: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>,
 Matan Azrad <matan@mellanox.com>, dpdk stable <stable@dpdk.org>
Date: Fri, 22 May 2020 10:40:06 +0100
Message-Id: <20200522094022.1025696-27-luca.boccassi@gmail.com>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200522094022.1025696-1-luca.boccassi@gmail.com>
References: <20200519130549.112823-214-luca.boccassi@gmail.com>
 <20200522094022.1025696-1-luca.boccassi@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-stable] patch 'common/mlx5: fix netlink buffer allocation
	from stack' has been queued to stable release 19.11.3
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
Errors-To: stable-bounces@dpdk.org
Sender: "stable" <stable-bounces@dpdk.org>

Hi,

FYI, your patch has been queued to stable release 19.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/24/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From 070a7b832dacc6a633585f3ec963682783c69b9b Mon Sep 17 00:00:00 2001
From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Date: Thu, 14 May 2020 07:11:12 +0000
Subject: [PATCH] common/mlx5: fix netlink buffer allocation from stack

[ upstream commit 3acf1071958185d2a299b9765e0c5c82e67ff416 ]

The buffer size to receive netlink reply messages is relatively
large (32K), and it is allocated on the stack and it might
break in application is using smaller per-thread stacks.
This patch allocates temporary buffer from heap.

Fixes: ccdcba53a3f4 ("net/mlx5: use Netlink to add/remove MAC addresses")

Reported-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_nl.c | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_nl.c b/drivers/net/mlx5/mlx5_nl.c
index e7ba03471d..64580b9e6a 100644
--- a/drivers/net/mlx5/mlx5_nl.c
+++ b/drivers/net/mlx5/mlx5_nl.c
@@ -269,10 +269,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
 	     void *arg)
 {
 	struct sockaddr_nl sa;
-	char buf[MLX5_RECV_BUF_SIZE];
+	void *buf = malloc(MLX5_RECV_BUF_SIZE);
 	struct iovec iov = {
 		.iov_base = buf,
-		.iov_len = sizeof(buf),
+		.iov_len = MLX5_RECV_BUF_SIZE,
 	};
 	struct msghdr msg = {
 		.msg_name = &sa,
@@ -284,6 +284,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
 	int multipart = 0;
 	int ret = 0;
 
+	if (!buf) {
+		rte_errno = ENOMEM;
+		return -rte_errno;
+	}
 	do {
 		struct nlmsghdr *nh;
 		int recv_bytes = 0;
@@ -292,7 +296,8 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
 			recv_bytes = recvmsg(nlsk_fd, &msg, 0);
 			if (recv_bytes == -1) {
 				rte_errno = errno;
-				return -rte_errno;
+				ret = -rte_errno;
+				goto exit;
 			}
 			nh = (struct nlmsghdr *)buf;
 		} while (nh->nlmsg_seq != sn);
@@ -304,24 +309,30 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
 
 				if (err_data->error < 0) {
 					rte_errno = -err_data->error;
-					return -rte_errno;
+					ret = -rte_errno;
+					goto exit;
 				}
 				/* Ack message. */
-				return 0;
+				ret = 0;
+				goto exit;
 			}
 			/* Multi-part msgs and their trailing DONE message. */
 			if (nh->nlmsg_flags & NLM_F_MULTI) {
-				if (nh->nlmsg_type == NLMSG_DONE)
-					return 0;
+				if (nh->nlmsg_type == NLMSG_DONE) {
+					ret =  0;
+					goto exit;
+				}
 				multipart = 1;
 			}
 			if (cb) {
 				ret = cb(nh, arg);
 				if (ret < 0)
-					return ret;
+					goto exit;
 			}
 		}
 	} while (multipart);
+exit:
+	free(buf);
 	return ret;
 }
 
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-22 10:37:40.262884873 +0100
+++ 0027-common-mlx5-fix-netlink-buffer-allocation-from-stack.patch	2020-05-22 10:37:39.144413000 +0100
@@ -1,28 +1,29 @@
-From 3acf1071958185d2a299b9765e0c5c82e67ff416 Mon Sep 17 00:00:00 2001
+From 070a7b832dacc6a633585f3ec963682783c69b9b Mon Sep 17 00:00:00 2001
 From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 Date: Thu, 14 May 2020 07:11:12 +0000
 Subject: [PATCH] common/mlx5: fix netlink buffer allocation from stack
 
+[ upstream commit 3acf1071958185d2a299b9765e0c5c82e67ff416 ]
+
 The buffer size to receive netlink reply messages is relatively
 large (32K), and it is allocated on the stack and it might
 break in application is using smaller per-thread stacks.
 This patch allocates temporary buffer from heap.
 
 Fixes: ccdcba53a3f4 ("net/mlx5: use Netlink to add/remove MAC addresses")
-Cc: stable@dpdk.org
 
 Reported-by: Stephen Hemminger <stephen@networkplumber.org>
 Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 Acked-by: Matan Azrad <matan@mellanox.com>
 ---
- drivers/common/mlx5/mlx5_nl.c | 27 +++++++++++++++++++--------
+ drivers/net/mlx5/mlx5_nl.c | 27 +++++++++++++++++++--------
  1 file changed, 19 insertions(+), 8 deletions(-)
 
-diff --git a/drivers/common/mlx5/mlx5_nl.c b/drivers/common/mlx5/mlx5_nl.c
-index 65efcd3df2..1a1033a40b 100644
---- a/drivers/common/mlx5/mlx5_nl.c
-+++ b/drivers/common/mlx5/mlx5_nl.c
-@@ -330,10 +330,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
+diff --git a/drivers/net/mlx5/mlx5_nl.c b/drivers/net/mlx5/mlx5_nl.c
+index e7ba03471d..64580b9e6a 100644
+--- a/drivers/net/mlx5/mlx5_nl.c
++++ b/drivers/net/mlx5/mlx5_nl.c
+@@ -269,10 +269,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
  	     void *arg)
  {
  	struct sockaddr_nl sa;
@@ -35,7 +36,7 @@
  	};
  	struct msghdr msg = {
  		.msg_name = &sa,
-@@ -345,6 +345,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
+@@ -284,6 +284,10 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
  	int multipart = 0;
  	int ret = 0;
  
@@ -46,7 +47,7 @@
  	do {
  		struct nlmsghdr *nh;
  		int recv_bytes = 0;
-@@ -353,7 +357,8 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
+@@ -292,7 +296,8 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
  			recv_bytes = recvmsg(nlsk_fd, &msg, 0);
  			if (recv_bytes == -1) {
  				rte_errno = errno;
@@ -56,7 +57,7 @@
  			}
  			nh = (struct nlmsghdr *)buf;
  		} while (nh->nlmsg_seq != sn);
-@@ -365,24 +370,30 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
+@@ -304,24 +309,30 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),
  
  				if (err_data->error < 0) {
  					rte_errno = -err_data->error;