From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Ahmad Fatoum <a.fatoum@barebox.org>
Subject: [PATCH 03/19] talloc: remove unused talloc_steal() and talloc_steal_children()
Date: Wed, 28 Oct 2026 10:14:37 +0100 [thread overview]
Message-ID: <20261028092442.3300753-4-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20261028092442.3300753-1-a.fatoum@pengutronix.de>
From: Ahmad Fatoum <a.fatoum@barebox.org>
Neither has users and devres doesn't reparent, so let's drop them
instead of teaching them about destructors. Internally, call
mem_set_parent() directly, which talloc_steal() just wrapped.
Assisted-by: Claude:opus-5.5
Signed-off-by: Ahmad Fatoum <a.fatoum@barebox.org>
---
include/talloc.h | 2 --
lib/talloc.c | 67 ++----------------------------------------------
2 files changed, 2 insertions(+), 67 deletions(-)
diff --git a/include/talloc.h b/include/talloc.h
index 79a175bd5441..1f2dd346a7c1 100644
--- a/include/talloc.h
+++ b/include/talloc.h
@@ -35,8 +35,6 @@ const char *talloc_strdup_const(const void *parent, const char *str);
void talloc_free_const(const void *ptr);
void *talloc_parent(const void *mem);
-void talloc_steal(const void *parent, void *mem);
-void talloc_steal_children(const void *parent, void *mem);
size_t talloc_total_blocks(const void *mem);
diff --git a/lib/talloc.c b/lib/talloc.c
index a1a7f8f0adc8..2bfbac2e9c29 100644
--- a/lib/talloc.c
+++ b/lib/talloc.c
@@ -34,7 +34,6 @@
#include <asm/sections.h>
#include "talloc.h"
-// TODO difference between set_parent and steal?
// TODO use a bit from TLSF for extra safety to differentiate talloc
// TODO allow leaf nodes (that have no children to be destructors!!)
#define is_root(hdr) (!(hdr)->prev)
@@ -69,7 +68,7 @@ static void *talloc_ctx_init(struct talloc *hdr, const void *parent)
memset(hdr, 0, sizeof(*hdr));
mem = hdr2mem(hdr);
- talloc_steal(parent, mem);
+ mem_set_parent(hdr, mem2hdr(parent));
return mem;
}
@@ -261,7 +260,7 @@ void talloc_free(void *mem)
if (ZERO_OR_NULL_PTR(mem))
return;
- talloc_steal(NULL, mem);
+ mem_set_parent(hdr, NULL);
__tfree(hdr->child);
@@ -335,68 +334,6 @@ void mem_set_parent(struct talloc *hdr, struct talloc *parent_hdr)
}
EXPORT_SYMBOL(mem_set_parent);
-/**
- * talloc_steal() - Reparent talloc'ed memory chunk
- *
- * @parent: pointer to previously talloc'ed memory chunk from which this
- * chunk depends, or NULL.
- * @mem: pointer to previously talloc'ed memory chunk.
- *
- * Change the parent of a talloc'ed memory chunk. This will affect the
- * dependencies of the entire subtree rooted at the given chunk.
- */
-void talloc_steal(const void *parent, void *mem)
-{
- struct talloc *hdr = mem2hdr(mem);
- struct talloc *parent_hdr = mem2hdr(parent);
-
- mem_set_parent(hdr, parent_hdr);
-}
-EXPORT_SYMBOL(talloc_steal);
-
-/**
- * talloc_steal_children() - Remove a talloc'ed memory chunk from the dependency tree
- *
- * @parent: pointer to previously talloc'ed memory chunk from which this
- * chunk's children will depend, or NULL.
- * @mem: pointer to previously talloc'ed memory chunk.
- *
- * Removing a talloc'ed memory chunk from the dependency tree takes care of its
- * children (they will depend on the specified parent).
- */
-void talloc_steal_children(const void *parent, void *mem)
-{
- struct talloc *hdr = mem2hdr(mem);
- struct talloc *parent_hdr = mem2hdr(parent);
-
- if (ZERO_OR_NULL_PTR(hdr))
- return;
-
- talloc_steal(NULL, mem);
-
- if (!hdr->child)
- return;
-
- if (parent_hdr) {
- /* Insert mem children in front of the list of parent children. */
- if (parent_hdr->child) {
- struct talloc *last = hdr->child;
-
- while (last->next)
- last = last->next;
-
- parent_hdr->child->prev = last;
- last->next = parent_hdr->child;
- }
-
- parent_hdr->child = hdr->child;
- }
-
- hdr->child->parent = parent_hdr;
- hdr->child = NULL;
-}
-EXPORT_SYMBOL(talloc_steal_children);
-
size_t talloc_total_blocks(const void *mem)
{
struct talloc *hdr = mem2hdr(mem);
--
2.47.3
next prev parent reply other threads:[~2026-10-28 9:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 9:14 [PATCH 00/19] driver: add devm_ support Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 01/19] commands: devunbind: refuse to unbind devices that were never bound Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 02/19] commands: devunbind: don't poison the active list entry Ahmad Fatoum
2026-10-28 9:14 ` Ahmad Fatoum [this message]
2026-10-28 9:14 ` [PATCH 04/19] talloc: free children in a loop Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 05/19] talloc: add support for destructors Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 06/19] test: self: talloc: add destructor tests Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 07/19] talloc: add talloc_run_destructors() Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 08/19] mfd: pca9450: don't free device-managed memory in probe error path Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 09/19] video: backlight-pwm: allocate brightness levels with devm_kcalloc Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 10/19] driver: implement devm_ allocation helpers on top of talloc Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 11/19] devres: Provide kmalloc_obj*-style API for devm_kmalloc Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 12/19] memory: atmel-ebi: use generic devm_kzalloc() Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 13/19] driver: add devm_add_action() Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 14/19] test: self: add devm_ selftest Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 15/19] driver: add devm_request_mem_resource() Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 16/19] driver: make dev_platform_ioremap_resource() device-managed Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 17/19] treewide: rename dev_platform_ioremap_resource() to devm_platform_ioremap_resource() Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 18/19] driver: make dev_platform_get_and_ioremap_resource() device-managed Ahmad Fatoum
2026-10-28 9:14 ` [PATCH 19/19] serial: stm32: request the registers with devm_request_mem_resource() Ahmad Fatoum
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=20261028092442.3300753-4-a.fatoum@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=a.fatoum@barebox.org \
--cc=barebox@lists.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