[dpdk-stable] patch 'net/ice/base: fix memory allocation wrapper' has been queued to stable release 20.11.2

Xueming Li xuemingl at nvidia.com
Sat Jun 12 01:03:20 CEST 2021


Hi,

FYI, your patch has been queued to stable release 20.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/14/21. 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.

Queued patches are on a temporary branch at:
https://github.com/steevenlee/dpdk

This queued commit can be viewed at:
https://github.com/steevenlee/dpdk/commit/6db31e330446f6830e8a4dc4c29f2f13622252e1

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From 6db31e330446f6830e8a4dc4c29f2f13622252e1 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Thu, 6 May 2021 12:07:02 +0200
Subject: [PATCH] net/ice/base: fix memory allocation wrapper
Cc: Luca Boccassi <bluca at debian.org>

[ upstream commit 35f9cb006534018b6f69dce8f0d22684fe98e812 ]

This is reported by our internal covscan:

1. dpdk-20.11/drivers/net/ice/base/ice_switch.c:4214: sign_extension:
Suspicious implicit sign extension: "s_rule_size" with type "u16" (16
bits, unsigned) is promoted in "num_unicast * s_rule_size" to type "int"
(32 bits, signed), then sign-extended to type "unsigned long" (64 bits,
unsigned).
If "num_unicast * s_rule_size" is greater than 0x7FFFFFFF, the upper bits
of the result will all be 1.

 #  4212|   	s_rule_size = ICE_SW_RULE_RX_TX_ETH_HDR_SIZE;
 #  4213|   	s_rule = (struct ice_aqc_sw_rules_elem *)
 #  4214|-> 		ice_calloc(hw, num_unicast, s_rule_size);
 #  4215|   	if (!s_rule) {
 #  4216|   		status = ICE_ERR_NO_MEMORY;

Even if this condition is not likely to happen, in any case, it is more
straightforward to rely on the existing rte_calloc.

Fixes: 5f0978e96220 ("net/ice/base: add OS specific implementation")

Signed-off-by: David Marchand <david.marchand at redhat.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
---
 drivers/net/ice/base/ice_osdep.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ice/base/ice_osdep.h b/drivers/net/ice/base/ice_osdep.h
index c0f1e77257..818bfa3b89 100644
--- a/drivers/net/ice/base/ice_osdep.h
+++ b/drivers/net/ice/base/ice_osdep.h
@@ -192,7 +192,7 @@ struct ice_virt_mem {
 } __rte_packed;
 
 #define ice_malloc(h, s)    rte_zmalloc(NULL, s, 0)
-#define ice_calloc(h, c, s) rte_zmalloc(NULL, (c) * (s), 0)
+#define ice_calloc(h, c, s) rte_calloc(NULL, c, s, 0)
 #define ice_free(h, m)         rte_free(m)
 
 #define ice_memset(a, b, c, d) memset((a), (b), (c))
-- 
2.25.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-06-12 06:53:59.334385400 +0800
+++ 0106-net-ice-base-fix-memory-allocation-wrapper.patch	2021-06-12 06:53:56.460000000 +0800
@@ -1 +1 @@
-From 35f9cb006534018b6f69dce8f0d22684fe98e812 Mon Sep 17 00:00:00 2001
+From 6db31e330446f6830e8a4dc4c29f2f13622252e1 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Luca Boccassi <bluca at debian.org>
+
+[ upstream commit 35f9cb006534018b6f69dce8f0d22684fe98e812 ]
@@ -26 +28,0 @@
-Cc: stable at dpdk.org
@@ -35 +37 @@
-index f4cc762e99..878c5597d4 100644
+index c0f1e77257..818bfa3b89 100644
@@ -38 +40 @@
-@@ -207,7 +207,7 @@ struct ice_virt_mem {
+@@ -192,7 +192,7 @@ struct ice_virt_mem {


More information about the stable mailing list