CVE-2024-39461: clk: bcm: rpi: Assign ->num before accessing ->hws
In the Linux kernel, the following vulnerability has been resolved:
clk: bcm: rpi: Assign ->num before accessing ->hws
Commit f316cdff8d67 ("clk: Annotate struct clk_hw_onecell_data with
__counted_by") annotated the hws member of 'struct clk_hw_onecell_data'
with __counted_by, which informs the bounds sanitizer about the number
of elements in hws, so that it can warn when hws is accessed out of
bounds. As noted in that change, the __counted_by member must be
initialized with the number of elements before the first array access
happens, otherwise there will be a warning from each access prior to the
initialization because the number of elements is zero. This occurs in
raspberrypi_discover_clocks() due to ->num being assigned after ->hws
has been accessed:
UBSAN: array-index-out-of-bounds in drivers/clk/bcm/clk-raspberrypi.c:374:4
index 3 is out of range for type 'struct clk_hw *[] __counted_by(num)' (aka 'struct clk_hw *[]')
Move the ->num initialization to before the first access of ->hws, which
clears up the warning.
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel bug in Raspberry Pi clock handling. The available record describes a bounds-sanitizer warning caused by using an array before its element count is initialized. Sources do not provide CVSS, exploitation evidence, or business-impact detail.
Executive priority
Monitor and remediate through normal kernel maintenance unless internal evidence shows crashes or sanitizer findings. There is no supplied evidence of active exploitation or remote attack impact.
Technical view
In drivers/clk/bcm/clk-raspberrypi.c, struct clk_hw_onecell_data->hws is annotated with __counted_by(num). raspberrypi_discover_clocks() accessed hws before assigning num, making sanitizer bounds checks see zero elements and report array-index-out-of-bounds. The fix moves num initialization before first hws access.
Likely exposure
Most relevant to Linux systems using affected kernel builds and the Broadcom Raspberry Pi clock driver path. The source lists Linux 6.6, 6.6.34, 6.9.5, and 6.10 data, but does not clearly define every affected range.
Exploitation context
No active exploitation is cited. The CVE is not listed as KEV in the supplied bundle, and the public description focuses on a UBSAN warning and initialization order, not an exploit technique.
Researcher notes
The evidence supports an initialization-order bug tied to __counted_by bounds instrumentation. The record does not provide CVSS, CWE, exploitability analysis, or complete affected-version semantics, so exposure validation should rely on vendor kernel backport data.
Mitigation direction
Check Linux distribution or device-vendor kernel advisories for CVE-2024-39461 status.
Update to a kernel build containing the referenced stable fixes.
Prioritize Raspberry Pi or Broadcom BCM clock-driver deployments first.
Track kernel package updates rather than applying unreviewed source patches manually.
Validation and detection
Inventory Linux kernel versions on Raspberry Pi or BCM-based systems.
Check whether deployed kernels include one of the referenced stable commits.
Review boot or kernel logs for UBSAN array-index-out-of-bounds reports in clk-raspberrypi.c.
Confirm vendor advisories mark the deployed kernel as fixed or unaffected.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-39461 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.