# CVE-2023-53749: x86: fix clear_user_rep_good() exception handling annotation

CVE-2023-53749 is fixed in 20 products on 1 platform, first by ALAS2023-2023-184, released May 25, 2023. It is not reported as exploited. Patch Radar priority: High.

- Web page: https://patchblox.com/security/cve/CVE-2023-53749
- Priority: High
- CVSS: 7.1 (Moderate)
- EPSS: n/a
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: May 25, 2023
- Vendor advisory: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-53749

## Description

In the Linux kernel, the following vulnerability has been resolved:  x86: fix clear_user_rep_good() exception handling annotation  This code no longer exists in mainline, because it was removed in commit d2c95f9d6802 ("x86: don't use REP_GOOD or ERMS for user memory clearing") upstream.  However, rather than backport the full range of x86 memory clearing and copying cleanups, fix the exception table annotation placement for the final 'rep movsb' in clear_user_rep_good(): rather than pointing at the actual instruction that did the user space access, it pointed to the register move just before it.  That made sense from a code flow standpoint, but not from an actual usage standpoint: it means that if user access takes an exception, the exception handler won't actually find the instruction in the exception tables.  As a result, rather than fixing it up and returning -EFAULT, it would then turn it into a kernel oops report instead, something like:      BUG: unable to handle page fault for address: 0000000020081000     #PF: supervisor write access in kernel mode     #PF: error_code(0x0002) - not-present page     ...     RIP: 0010:clear_user_rep_good+0x1c/0x30 arch/x86/lib/clear_page_64.S:147     ...     Call Trace:       __clear_user arch/x86/include/asm/uaccess_64.h:103 [inline]       clear_user arch/x86/include/asm/uaccess_64.h:124 [inline]       iov_iter_zero+0x709/0x1290 lib/iov_iter.c:800       iomap_dio_hole_iter fs/iomap/direct-io.c:389 [inline]       iomap_dio_iter fs/iomap/direct-io.c:440 [inline]       __iomap_dio_rw+0xe3d/0x1cd0 fs/iomap/direct-io.c:601       iomap_dio_rw+0x40/0xa0 fs/iomap/direct-io.c:689       ext4_dio_read_iter fs/ext4/file.c:94 [inline]       ext4_file_read_iter+0x4be/0x690 fs/ext4/file.c:145       call_read_iter include/linux/fs.h:2183 [inline]       do_iter_readv_writev+0x2e0/0x3b0 fs/read_write.c:733       do_iter_read+0x2f2/0x750 fs/read_write.c:796       vfs_readv+0xe5/0x150 fs/read_write.c:916       do_preadv+0x1b6/0x270 fs/read_write.c:1008       __do_sys_preadv2 fs/read_write.c:1070 [inline]       __se_sys_preadv2 fs/read_write.c:1061 [inline]       __x64_sys_preadv2+0xef/0x150 fs/read_write.c:1061       do_syscall_x64 arch/x86/entry/common.c:50 [inline]       do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80       entry_SYSCALL_64_after_hwframe+0x63/0xcd  which then looks like a filesystem bug rather than the incorrect exception annotation that it is.  [ The alternative to this one-liner fix is to take the upstream series   that cleans this all up:      68674f94ffc9 ("x86: don't use REP_GOOD or ERMS for small memory copies")     20f3337d350c ("x86: don't use REP_GOOD or ERMS for small memory clearing")     adfcf4231b8c ("x86: don't use REP_GOOD or ERMS for user memory copies")   * d2c95f9d6802 ("x86: don't use REP_GOOD or ERMS for user memory clearing")     3639a535587d ("x86: move stac/clac from user copy routines into callers")     577e6a7fd50d ("x86: inline the 'rep movs' in user copies for the FSRM case")     8c9b6a88b7e2 ("x86: improve on the non-rep 'clear_user' function")     427fda2c8a49 ("x86: improve on the non-rep 'copy_user' function")   * e046fe5a36a9 ("x86: set FSRS automatically on AMD CPUs that have FSRM")     e1f2750edc4a ("x86: remove 'zerorest' argument from __copy_user_nocache()")     034ff37d3407 ("x86: rewrite '__copy_user_nocache' function")    with either the whole series or at a minimum the two marked commits   being needed to fix this issue ]

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | bpftool amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | bpftool-debuginfo amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-debuginfo amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-debuginfo-common-aarch64 amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-debuginfo-common-x86_64 amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-devel amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-headers amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-libbpf amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-libbpf-devel amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-libbpf-static amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-livepatch-6.1.29-47.49 amzn 2023 | 1.0-0.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-tools amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-tools-debuginfo amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | kernel-tools-devel amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | linux Debian 12.15 (bookworm) | 6.1.37-1 | [DEBIAN-CVE-2023-53749](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53749.md) | Dec 8, 2025 |
| Linux | linux Debian 13.5 (trixie) | 6.4.4-1 | [DEBIAN-CVE-2023-53749](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53749.md) | Dec 8, 2025 |
| Linux | linux Debian 14 | 6.4.4-1 | [DEBIAN-CVE-2023-53749](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53749.md) | Dec 8, 2025 |
| Linux | perf amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | perf-debuginfo amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | python3-perf amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |
| Linux | python3-perf-debuginfo amzn 2023 | 6.1.29-47.49.amzn2023 | [ALAS2023-2023-184](https://patchblox.com/security/data/fix/linux/alas2023-2023-184.md) | May 25, 2023 |

---

Data as of 2026-11-08T13:06:02Z 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.
