Re: [PATCH v4] x86/amd/node: Release reserved config regions on init error
From: Borislav Petkov
Date: Tue Sep 15 2026 - 16:55:16 EST
I do have concerns:
On Tue, Sep 15, 2026 at 08:05:43PM +0200, yolezz wrote:
> In amd_smn_init(), if pci_request_config_region_exclusive() fails or
> if kzalloc_objs() fails to allocate memory for amd_roots, the already
> reserved PCI config regions are left allocated.
>
> Use a __free() cleanup helper to automatically release all reserved PCI
> config space regions on error exit paths.
>
> Fixes: 83518453074d ("x86/amd_node: Add SMN offsets to exclusive region access")
> Signed-off-by: yolezz <yolezz.secret@xxxxxxxxx>
You need to use your legal name when you sign off on and author patches.
> arch/x86/kernel/amd_node.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/amd_node.c b/arch/x86/kernel/amd_node.c
> index b7926ba3610a..a1db03d3777b 100644
> --- a/arch/x86/kernel/amd_node.c
> +++ b/arch/x86/kernel/amd_node.c
> @@ -239,6 +239,22 @@ static struct pci_dev *get_next_root(struct pci_dev *root)
> return root;
> }
>
> +static void amd_smn_release_config_regions(u16 *num_roots)
> +{
> + struct pci_dev *root __free(pci_dev_put) = NULL;
> +
> + if (!num_roots)
> + return;
> +
> + while (*num_roots && (root = get_next_root(root))) {
> + pci_release_config_region(root, 0, PCI_CFG_SPACE_SIZE);
> + (*num_roots)--;
> + }
> +}
> +
> +DEFINE_FREE(amd_smn_release_config_regions, u16 *,
> + amd_smn_release_config_regions(_T));
> +
The fact that you have to wrangle a solution like this just so that you can
use those fancy __free() gunk should both y'all perhaps give you a hint that
not everything is a nail.
The proper fix is to unwind any setup the function has done in reverse order
by jumping to error labels each time it encounters an error. The good old
design pattern that has been used in the kernel for decades.
This way you don't need a separate release function along with a dummy
config_regions crap which is just ugly.
Thx.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette