CVE-2026-89744

CVE-2026-89744

High · published September 12, 2026

CVSS v3.1
8.4
EPSS
0%
Percentile
3.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

device property: fix infinite loop in fwnode_for_each_child_node()

When iterate over children of a fwnode that has a secondary fwnode,

fwnode_get_next_child_node() can enter an infinite loop if the secondary

fwnode has more than one child.

Parent Child

(Primary fwnode) FWa: {FWa1, FWa2, FWa3}

(Secondary fwnode) FWb: {FWb1, FWb2}

In this case:

┌─> fwnode_get_next_child_node(FWa, FWa1)

│ - fwnode_call_ptr_op(FWa, get_next_child_node, FWa1) returns FWa2

│

│ ...

│

│ fwnode_get_next_child_node(FWa, FWa3)

│ - fwnode_call_ptr_op(FWa, get_next_child_node, FWa3) returns NULL

│ - fwnode_call_ptr_op(FWb, get_next_child_node, FWa3) returns FWb1

│

│ fwnode_get_next_child_node(FWa, FWb1)

│ - fwnode_call_ptr_op(FWa, get_next_child_node, FWb1) returns FWa1

└────┘

This cause fwnode_for_each_child_node() to loop indefinitely, reapeatedly

output {FWa1, FWa2, FWa3, FWb1, FWa1, ...}.

The root cause is that when the current child (FWb1) belongs to the

secondary fwnode, calling get_next_child_node() on the parimary fwnode

incorrectly returns the first child (FWa1) again instead of NULL.

Fix this by dynamically checking the parent fwnode of the current child

before calling get_next_child_node(). This approach follows the pattern

established in commit b5b41ab6b0c1 ("device property: Check

fwnode->secondary in fwnode_graph_get_next_endpoint()").

The record
Technical detail
CVSS v3.1
8.4 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00142 · 3.2th percentile
Published
2026-09-12T00:20Z
References (6)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:46Z
    device property: fix infinite loop in fwnode_for_each_child_node()
    cvelistv5