# CVE-2021-47034: linux: In the Linux kernel, the following vulnerability has been resolved:  powerpc/64s: Fix pte update for kernel memory on...

CVE-2021-47034 is fixed in linux on 1 platform, first by DEBIAN-CVE-2021-47034, released February 28, 2024. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2021-47034
- Priority: Routine
- CVSS: 4.4 (medium)
- EPSS: 0.0022
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Feb 28, 2024

## Description

In the Linux kernel, the following vulnerability has been resolved:  powerpc/64s: Fix pte update for kernel memory on radix  When adding a PTE a ptesync is needed to order the update of the PTE with subsequent accesses otherwise a spurious fault may be raised.  radix__set_pte_at() does not do this for performance gains. For non-kernel memory this is not an issue as any faults of this kind are corrected by the page fault handler. For kernel memory these faults are not handled. The current solution is that there is a ptesync in flush_cache_vmap() which should be called when mapping from the vmalloc region.  However, map_kernel_page() does not call flush_cache_vmap(). This is troublesome in particular for code patching with Strict RWX on radix. In do_patch_instruction() the page frame that contains the instruction to be patched is mapped and then immediately patched. With no ordering or synchronization between setting up the PTE and writing to the page it is possible for faults.  As the code patching is done using __put_user_asm_goto() the resulting fault is obscured - but using a normal store instead it can be seen:    BUG: Unable to handle kernel data access on write at 0xc008000008f24a3c   Faulting instruction address: 0xc00000000008bd74   Oops: Kernel access of bad area, sig: 11 [#1]   LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA PowerNV   Modules linked in: nop_module(PO+) [last unloaded: nop_module]   CPU: 4 PID: 757 Comm: sh Tainted: P           O      5.10.0-rc5-01361-ge3c1b78c8440-dirty #43   NIP:  c00000000008bd74 LR: c00000000008bd50 CTR: c000000000025810   REGS: c000000016f634a0 TRAP: 0300   Tainted: P           O       (5.10.0-rc5-01361-ge3c1b78c8440-dirty)   MSR:  9000000000009033 <SF,HV,EE,ME,IR,DR,RI,LE>  CR: 44002884  XER: 00000000   CFAR: c00000000007c68c DAR: c008000008f24a3c DSISR: 42000000 IRQMASK: 1  This results in the kind of issue reported here:   https://lore.kernel.org/linuxppc-dev/15AC5B0E-A221-4B8C-9039-FA96B8EF7C88@lca.pw/  Chris Riedl suggested a reliable way to reproduce the issue:   $ mount -t debugfs none /sys/kernel/debug   $ (while true; do echo function > /sys/kernel/debug/tracing/current_tracer ; echo nop > /sys/kernel/debug/tracing/current_tracer ; done) &  Turning ftrace on and off does a large amount of code patching which in usually less then 5min will crash giving a trace like:     ftrace-powerpc: (____ptrval____): replaced (4b473b11) != old (60000000)    ------------[ ftrace bug ]------------    ftrace failed to modify    [<c000000000bf8e5c>] napi_busy_loop+0xc/0x390     actual:   11:3b:47:4b    Setting ftrace call site to call ftrace function    ftrace record flags: 80000001     (1)     expected tramp: c00000000006c96c    ------------[ cut here ]------------    WARNING: CPU: 4 PID: 809 at kernel/trace/ftrace.c:2065 ftrace_bug+0x28c/0x2e8    Modules linked in: nop_module(PO-) [last unloaded: nop_module]    CPU: 4 PID: 809 Comm: sh Tainted: P           O      5.10.0-rc5-01360-gf878ccaf250a #1    NIP:  c00000000024f334 LR: c00000000024f330 CTR: c0000000001a5af0    REGS: c000000004c8b760 TRAP: 0700   Tainted: P           O       (5.10.0-rc5-01360-gf878ccaf250a)    MSR:  900000000282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>  CR: 28008848  XER: 20040000    CFAR: c0000000001a9c98 IRQMASK: 0    GPR00: c00000000024f330 c000000004c8b9f0 c000000002770600 0000000000000022    GPR04: 00000000ffff7fff c000000004c8b6d0 0000000000000027 c0000007fe9bcdd8    GPR08: 0000000000000023 ffffffffffffffd8 0000000000000027 c000000002613118    GPR12: 0000000000008000 c0000007fffdca00 0000000000000000 0000000000000000    GPR16: 0000000023ec37c5 0000000000000000 0000000000000000 0000000000000008    GPR20: c000000004c8bc90 c0000000027a2d20 c000000004c8bcd0 c000000002612fe8    GPR24: 0000000000000038 0000000000000030 0000000000000028 0000000000000020    GPR28: c000000000ff1b68 c000000000bf8e5c c00000000312f700 c000000000fbb9b0    NIP ftrace_bug+0x28c/0x2e8    LR  ftrace_bug+0x288/0x2e8    Call T ---truncated---

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 12.15 (bookworm) | 5.10.38-1 | [DEBIAN-CVE-2021-47034](https://patchblox.com/security/data/fix/linux/debian-cve-2021-47034.md) | Feb 28, 2024 |
| Linux | linux Debian 13.5 (trixie) | 5.10.38-1 | [DEBIAN-CVE-2021-47034](https://patchblox.com/security/data/fix/linux/debian-cve-2021-47034.md) | Feb 28, 2024 |
| Linux | linux Debian 14 | 5.10.38-1 | [DEBIAN-CVE-2021-47034](https://patchblox.com/security/data/fix/linux/debian-cve-2021-47034.md) | Feb 28, 2024 |

---

Data as of 2026-11-09T01:18:40Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
