---
id: CVE-2025-71109
title: 'MIPS: ftrace: Fix memory corruption when kernel is located beyond 32 bits'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  MIPS: ftrace: Fix memory corruption when kernel is located beyond 32 bits

  Since commit e424054000878 ("MIPS: Tracing: Reduce the overhead of
  dynamic Function Tracer"),…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= e424054000878d7eb11e44289242886d6e219d22 <
    9cfda98cf02eacfa6b09076e98bd479fd73407c2
  - >-
    Linux >= e424054000878d7eb11e44289242886d6e219d22 <
    e3e33ac2eb69d595079a1a1e444c2fb98efdd42d
  - >-
    Linux >= e424054000878d7eb11e44289242886d6e219d22 <
    7f39b9d0e86ed6236b9a5fb67616ab1f76c4f150
  - >-
    Linux >= e424054000878d7eb11e44289242886d6e219d22 <
    36dac9a3dda1f2bae343191bc16b910c603cac25
  - Linux 2.6.35
published: '2026-01-14'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:38:34.366Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2025-71109'
references:
  - url: 'https://git.kernel.org/stable/c/9cfda98cf02eacfa6b09076e98bd479fd73407c2'
  - url: 'https://git.kernel.org/stable/c/e3e33ac2eb69d595079a1a1e444c2fb98efdd42d'
  - url: 'https://git.kernel.org/stable/c/7f39b9d0e86ed6236b9a5fb67616ab1f76c4f150'
  - url: 'https://git.kernel.org/stable/c/36dac9a3dda1f2bae343191bc16b910c603cac25'
tags:
  - cve.org
epss: 0.00226
epssPercentile: 0.13245
ingestedAt: '2026-10-21T12:48:53.676Z'
---

## Overview

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

MIPS: ftrace: Fix memory corruption when kernel is located beyond 32 bits

Since commit e424054000878 ("MIPS: Tracing: Reduce the overhead of
dynamic Function Tracer"), the macro UASM_i_LA_mostly has been used,
and this macro can generate more than 2 instructions. At the same
time, the code in ftrace assumes that no more than 2 instructions can
be generated, which is why it stores them in an int[2] array. However,
as previously noted, the macro UASM_i_LA_mostly (and now UASM_i_LA)
causes a buffer overflow when _mcount is beyond 32 bits. This leads to
corruption of the variables located in the __read_mostly section.

This corruption was observed because the variable
__cpu_primary_thread_mask was corrupted, causing a hang very early
during boot.

This fix prevents the corruption by avoiding the generation of
instructions if they could exceed 2 instructions in
length. Fortunately, insn_la_mcount is only used if the instrumented
code is located outside the kernel code section, so dynamic ftrace can
still be used, albeit in a more limited scope. This is still
preferable to corrupting memory and/or crashing the kernel.

## Affected

- `Linux >= e424054000878d7eb11e44289242886d6e219d22 < 9cfda98cf02eacfa6b09076e98bd479fd73407c2`
- `Linux >= e424054000878d7eb11e44289242886d6e219d22 < e3e33ac2eb69d595079a1a1e444c2fb98efdd42d`
- `Linux >= e424054000878d7eb11e44289242886d6e219d22 < 7f39b9d0e86ed6236b9a5fb67616ab1f76c4f150`
- `Linux >= e424054000878d7eb11e44289242886d6e219d22 < 36dac9a3dda1f2bae343191bc16b910c603cac25`
- `Linux 2.6.35`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
