[PATCH 2/2] x86/amd_node: fix null pointer dereference if amd_smn_init failed

From: Steven Noonan

Date: Fri Nov 14 2025 - 14:57:57 EST


We should be checking the `smn_exclusive` flag before anything else,
because that indicates whether we got through `amd_smn_init`
successfully.

Without this change, we dereference `amd_roots` even though it may not
be allocated.

Signed-off-by: Steven Noonan <steven@xxxxxxxxxxxxxx>
Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
CC: Yazen Ghannam <yazen.ghannam@xxxxxxx>
CC: x86@xxxxxxxxxxxxxxx
CC: stable@xxxxxxxxxxxxxxx
---
arch/x86/kernel/amd_node.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/amd_node.c b/arch/x86/kernel/amd_node.c
index cdc6ba224d4ad..919932339f4a2 100644
--- a/arch/x86/kernel/amd_node.c
+++ b/arch/x86/kernel/amd_node.c
@@ -88,6 +88,9 @@ static int __amd_smn_rw(u8 i_off, u8 d_off, u16 node, u32 address, u32 *value, b
struct pci_dev *root;
int err = -ENODEV;

+ if (!smn_exclusive)
+ return err;
+
if (node >= amd_num_nodes())
return err;

@@ -95,9 +98,6 @@ static int __amd_s
mn_rw(u8 i_off, u8 d_off, u16 node, u32 address, u32 *value, b
if (!root)
return err;

- if (!smn_exclusive)
- return err;
-
guard(mutex)(&smn_mutex);

err = pci_write_config_dword(root, i_off, address);
--
2.51.2

Attachment: signature.asc
Description: OpenPGP digital signature