---
id: CVE-2026-89489
title: 'openrisc: fix arbitrary kernel memory access via or1k_atomic syscall'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  openrisc: fix arbitrary kernel memory access via or1k_atomic syscall

  sys_or1k_atomic() (syscall 244 in the "or1k" ABI) takes two user
  pointers, v1 and v2, and swaps th…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
cwe:
  - CWE-822
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    bf310718c6fa6adeee06d207a55489546d860e2c
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    497cba0b02e5555d99fe9ee1dc478af743ab7f7a
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    1f2e92e499d863f81df1732af59b4a3559969193
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    574ae2ac2b314aa33498cd2c28add106cbe644f2
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    a520e8cac54fb403f3800125b606f55fcad42cb9
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    d64a75369cd0f2ee79afcc9d9ca34a3890989379
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    b53435c079c78f89f70a62dd5a322cca4e292b34
  - >-
    Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a <
    78004e9a87f240df03e2f73120d291763c32e0a7
  - Linux 3.1
published: '2026-09-11'
updated: '2026-10-19'
sourceUpdated: '2026-10-19T08:47:40.968Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-89489'
references:
  - url: 'https://git.kernel.org/stable/c/bf310718c6fa6adeee06d207a55489546d860e2c'
  - url: 'https://git.kernel.org/stable/c/497cba0b02e5555d99fe9ee1dc478af743ab7f7a'
  - url: 'https://git.kernel.org/stable/c/1f2e92e499d863f81df1732af59b4a3559969193'
  - url: 'https://git.kernel.org/stable/c/574ae2ac2b314aa33498cd2c28add106cbe644f2'
  - url: 'https://git.kernel.org/stable/c/a520e8cac54fb403f3800125b606f55fcad42cb9'
  - url: 'https://git.kernel.org/stable/c/d64a75369cd0f2ee79afcc9d9ca34a3890989379'
  - url: 'https://git.kernel.org/stable/c/b53435c079c78f89f70a62dd5a322cca4e292b34'
  - url: 'https://git.kernel.org/stable/c/78004e9a87f240df03e2f73120d291763c32e0a7'
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89489.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-89489'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2532099'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-89489'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89489'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89489.mbox
tags:
  - cve.org
  - csaf
  - vex
  - red-hat
  - score-dispute
epss: 0.00136
epssPercentile: 0.03016
scores:
  cna: 7.8
  vendor: 5.5
ingestedAt: '2026-09-14T15:23:07.452Z'
---

## Overview

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

openrisc: fix arbitrary kernel memory access via or1k_atomic syscall

sys_or1k_atomic() (syscall 244 in the "or1k" ABI) takes two user
pointers, v1 and v2, and swaps the words they point to in hand-written
assembly.

    l.lwz   r29,0(r4)
    l.lwz   r27,0(r5)
    l.sw    0(r4),r27
    l.sw    0(r5),r29

The pointers are not checked with access_ok(). The four memory
accesses also have no exception table entries.

A caller passes a kernel address as either pointer, and the syscall
reads from and writes to it directly.

This gives an unprivileged process a kernel read/write primitive. It
overwrites kernel data such as the sys_call_table, gaining code
execution in kernel context.

Check both pointers before entering the critical section. Add fixups
for the four memory accesses so faults on valid but unmapped user
addresses return -EFAULT.

[shorne@gmail.com: fix comment style]

## Affected

- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < bf310718c6fa6adeee06d207a55489546d860e2c`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < 497cba0b02e5555d99fe9ee1dc478af743ab7f7a`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < 1f2e92e499d863f81df1732af59b4a3559969193`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < 574ae2ac2b314aa33498cd2c28add106cbe644f2`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < a520e8cac54fb403f3800125b606f55fcad42cb9`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < d64a75369cd0f2ee79afcc9d9ca34a3890989379`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < b53435c079c78f89f70a62dd5a322cca4e292b34`
- `Linux >= 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a < 78004e9a87f240df03e2f73120d291763c32e0a7`
- `Linux 3.1`

## Remediation

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

## Vendor advisories

- **Red Hat VEX** · Moderate · updated 2026-09-18 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89489.json)
