---
id: "CVE-2026-98848"
kind: "vulnerability"
aliases: ["CVE-2026-98848"]
title: "Linux kernel: AC100 RTC clock setup trips bounds sanitizer during probe"
severity: "low"
cvss: null
epss: null
exploited: false
status: "open"
category: "other"
products: []
ecosystems: []
tags: ["ac100", "embedded", "linux-kernel", "other", "rtc"]
not_affected_if: ["default-config", "no-ubsan-bounds", "non-ac100-hardware"]
published_at: "2026-10-18T16:17:39+00:00"
first_seen_at: "2026-10-23T21:57:17+00:00"
updated_at: "2026-10-25T05:13:05+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98848", "first_seen_at": "2026-10-23T21:57:17+00:00"}]
---

# Linux kernel: AC100 RTC clock setup trips bounds sanitizer during probe

In the Linux RTC driver for the AC100 chip, the clock provider's element count was set after the array was already written, so kernels built with UBSAN bounds checking report an out-of-bounds access and trap at boot. The sources describe a crash or warning during probe on those builds, not a way for an attacker to run code.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- `uname -r` to get the running kernel version, then compare against the fixed stable kernel listed in the NVD entry
- `grep -i ubsan /boot/config-$(uname -r)` to see whether CONFIG_UBSAN_BOUNDS or CONFIG_UBSAN_TRAP is enabled
- unknown for the exact affected version range, as the sources do not say

## Fix

- Update the Linux kernel to a stable release that includes the commit 'rtc: ac100: Assign .num before accessing .hws'
- unknown for the exact fixed version number, as the sources do not say

## Timeline

- 2026-10-23T21:57:17+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98848

## From the sources

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

rtc: ac100: 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 (UBSAN_BOUNDS)
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 ac100_rtc_register_clks() due to .num being assigned only
after every clkout clock has been stored in .hws[]. With
CONFIG_UBSAN_BOUNDS and a compiler that implements __counted_by (GCC
15.1+ or Clang 20.1+), this triggers an array-index-out-of-bounds report
during probe, and with CONFIG_UBSAN_TRAP the first store traps.

Initialize .num with AC100_CLKOUT_NUM, the number of elements .hws[] was
allocated with, right after the allocation. That is the value the loop
counter ends up at on the success path anyway, so the provider's
behaviour is unchanged.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
