[dpdk-stable] patch 'contigmem: cleanup properly when load fails' has been queued to stable release 19.11.3

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue May 19 14:53:58 CEST 2020


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/21/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 47109048612843c94cb18cb51c221dcf559b33df Mon Sep 17 00:00:00 2001
From: Jim Harris <james.r.harris at intel.com>
Date: Mon, 9 Mar 2020 03:00:25 -0700
Subject: [PATCH] contigmem: cleanup properly when load fails

[ upstream commit 3df951337441cc6b7bb99996e0acf185d4aa52c5 ]

If contigmem is not able to allocate all of the
requested buffers, it frees whatever buffers were
able to be allocated up until that point.

But the pointers are not set to NULL in that case.
After the load fails, the FreeBSD kernel will
immediately call the contigmem unload handler, which
tries to free the buffers again since the pointers
were not set to NULL.

It's not clear that we should just rely on the unload
handler getting called after load failure. So let's
keep the existing cleanup code in the load handler,
but explicitly set the pointers to NULL after freeing
them.

Fixes: 5f51eca22489 ("contigmem: free allocated memory on error")

Signed-off-by: Jim Harris <james.r.harris at intel.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 kernel/freebsd/contigmem/contigmem.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/freebsd/contigmem/contigmem.c b/kernel/freebsd/contigmem/contigmem.c
index 64e0a7fecd..abb76f241e 100644
--- a/kernel/freebsd/contigmem/contigmem.c
+++ b/kernel/freebsd/contigmem/contigmem.c
@@ -165,9 +165,11 @@ contigmem_load()
 
 error:
 	for (i = 0; i < contigmem_num_buffers; i++) {
-		if (contigmem_buffers[i].addr != NULL)
+		if (contigmem_buffers[i].addr != NULL) {
 			contigfree(contigmem_buffers[i].addr,
 				contigmem_buffer_size, M_CONTIGMEM);
+			contigmem_buffers[i].addr = NULL;
+		}
 		if (mtx_initialized(&contigmem_buffers[i].mtx))
 			mtx_destroy(&contigmem_buffers[i].mtx);
 	}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-19 13:56:20.821496642 +0100
+++ 0048-contigmem-cleanup-properly-when-load-fails.patch	2020-05-19 13:56:18.279502899 +0100
@@ -1,8 +1,10 @@
-From 3df951337441cc6b7bb99996e0acf185d4aa52c5 Mon Sep 17 00:00:00 2001
+From 47109048612843c94cb18cb51c221dcf559b33df Mon Sep 17 00:00:00 2001
 From: Jim Harris <james.r.harris at intel.com>
 Date: Mon, 9 Mar 2020 03:00:25 -0700
 Subject: [PATCH] contigmem: cleanup properly when load fails
 
+[ upstream commit 3df951337441cc6b7bb99996e0acf185d4aa52c5 ]
+
 If contigmem is not able to allocate all of the
 requested buffers, it frees whatever buffers were
 able to be allocated up until that point.
@@ -20,7 +22,6 @@
 them.
 
 Fixes: 5f51eca22489 ("contigmem: free allocated memory on error")
-Cc: stable at dpdk.org
 
 Signed-off-by: Jim Harris <james.r.harris at intel.com>
 Acked-by: Bruce Richardson <bruce.richardson at intel.com>
@@ -29,7 +30,7 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/kernel/freebsd/contigmem/contigmem.c b/kernel/freebsd/contigmem/contigmem.c
-index 7ea0bc6177..bd72f4d620 100644
+index 64e0a7fecd..abb76f241e 100644
 --- a/kernel/freebsd/contigmem/contigmem.c
 +++ b/kernel/freebsd/contigmem/contigmem.c
 @@ -165,9 +165,11 @@ contigmem_load()


More information about the stable mailing list