Re: Clarifying confusion of our variable placement rules caused by cleanup.h

Steven Rostedt <[email protected]>
Newsgroups dev.linux.lists.ksummit,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Tue, 18 Nov 2025 10:38:20 -0800
Linus Torvalds <[email protected]> wrote:

>         struct x509_parse_context *ctx __free(kfree) = NULL;
>         ... other code ...
>         ctx = kzalloc(sizeof(struct x509_parse_context), GFP_KERNEL);
> 
> where you have now split up the whole "this is allocated by kmalloc,
> and free'd by kfree" into two different sections that are not next to
> each other.

I've been doing the above, and was even going to recommend it to James. But
if it is preferred to declare the __free() variables where they are
allocated, I'd be much happier.

I think the code could also be better optimized? I haven't run an objcopy to
confirm but now early exits do not require calling the __free() function on
NULL pointers.

Most of my code allocates near the top where I don't find this a problem,
but I do have a few places of:

	struct foo *var __free(kfree) = NULL;

	if (ret < 0)
		return -ERROR;

	[ several more error exits ]

	var = kmalloc(..);

-- Steve
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.