From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
To: Andrew Morton <akpm@linux-foundation.org>,
Pedro Falcato <pfalcato@suse.de>
Cc: "Liam R . Howlett" <Liam.Howlett@oracle.com>,
Matthew Wilcox <willy@infradead.org>,
Sidhartha Kumar <sidhartha.kumar@oracle.com>,
Vlastimil Babka <vbabka@suse.cz>,
maple-tree@lists.infradead.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] testing/radix-tree/maple: hack around kfree_rcu not existing
Date: Thu, 14 Aug 2025 07:49:27 +0100 [thread overview]
Message-ID: <20250814064927.27345-1-lorenzo.stoakes@oracle.com> (raw)
From: Pedro Falcato <pfalcato@suse.de>
liburcu doesn't have kfree_rcu (or anything similar). Despite that, we can
hack around it in a trivial fashion, by adding a wrapper.
This wrapper only works for maple_nodes, and not anything else (due to us
not being able to know rcu_head offsets in any way), and thus we take
advantage of the type checking to avoid future silent breakage.
This fixes the build for the VMA userland tests.
Additionally remove the existing implementation in maple.c, and have
maple.c include the maple-shared.c header.
Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Tested-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Signed-off-by: Pedro Falcato <pfalcato@suse.de>
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
Andrew - please attribute this as Pedro's patch (Pedro - please mail to
confirm), as this is simply an updated version of [0], pulled out to fix the
VMA tests which remain broken.
Sid - I kept your R-b as this is fundamentally the same thing, just pulling out
shared code from maple.c.
Delta from [0]:
* Removed duplicated code from maple.c.
* Slightly reworded patch description.
Note I didn't put a Fixes, as the relevant commit [1] is not yet upstream.
Thanks, Lorenzo
[0]:https://lore.kernel.org/all/20250812162124.59417-1-pfalcato@suse.de/
[1]:https://lore.kernel.org/all/20250718172138.103116-1-pfalcato@suse.de/
tools/testing/radix-tree/maple.c | 18 +-----------------
tools/testing/shared/maple-shared.h | 15 +++++++++++++++
2 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/tools/testing/radix-tree/maple.c b/tools/testing/radix-tree/maple.c
index bfdc93c36cf9..fbfd4fcc634c 100644
--- a/tools/testing/radix-tree/maple.c
+++ b/tools/testing/radix-tree/maple.c
@@ -23,23 +23,7 @@
#define MODULE_LICENSE(x)
#define dump_stack() assert(0)
-
-#include <linux/maple_tree.h>
-
-static void free_node(struct rcu_head *head)
-{
- struct maple_node *node = container_of(head, struct maple_node, rcu);
-
- free(node);
-}
-
-static void kfree_rcu_node(struct maple_node *node)
-{
- call_rcu(&node->rcu, free_node);
-}
-
-#define kfree_rcu(ptr, memb) kfree_rcu_node(ptr)
-
+#include "../shared/maple-shared.h"
#include "../../../lib/maple_tree.c"
#include "../../../lib/test_maple_tree.c"
diff --git a/tools/testing/shared/maple-shared.h b/tools/testing/shared/maple-shared.h
index dc4d30f3860b..572cd2580123 100644
--- a/tools/testing/shared/maple-shared.h
+++ b/tools/testing/shared/maple-shared.h
@@ -9,5 +9,20 @@
#include <stdlib.h>
#include <time.h>
#include "linux/init.h"
+#include <linux/maple_tree.h>
+
+static inline void free_node(struct rcu_head *head)
+{
+ struct maple_node *node = container_of(head, struct maple_node, rcu);
+
+ free(node);
+}
+
+static inline void kfree_rcu_node(struct maple_node *node)
+{
+ call_rcu(&node->rcu, free_node);
+}
+
+#define kfree_rcu(ptr, memb) kfree_rcu_node(ptr)
#endif /* __MAPLE_SHARED_H__ */
--
2.50.1
next reply other threads:[~2025-08-14 6:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-14 6:49 Lorenzo Stoakes [this message]
2025-08-14 12:40 ` [PATCH] testing/radix-tree/maple: hack around kfree_rcu not existing Pedro Falcato
2025-08-15 1:02 ` Andrew Morton
2025-08-15 2:09 ` Liam R. Howlett
2025-08-15 4:28 ` Lorenzo Stoakes
2025-08-15 9:47 ` Lorenzo Stoakes
2025-08-15 12:34 ` Pedro Falcato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250814064927.27345-1-lorenzo.stoakes@oracle.com \
--to=lorenzo.stoakes@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=maple-tree@lists.infradead.org \
--cc=pfalcato@suse.de \
--cc=sidhartha.kumar@oracle.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).