• FreeBSD Errata Notice FreeBSD-EN-26:16.arm64

    From FreeBSD Errata Notices@3:633/10 to All on Tuesday, June 30, 2026 20:00:10
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA512

    ============================================================================= FreeBSD-EN-26:16.arm64 Errata Notice
    The FreeBSD Project

    Topic: 32-bit setcontext(2) and swapcontext(2) fail on arm64

    Category: core
    Module: arm64
    Announced: 2026-06-30
    Affects: All supported versions of FreeBSD.
    Corrected: 2026-06-29 08:11:12 UTC (stable/15, 15.1-STABLE)
    2026-06-30 17:21:50 UTC (releng/15.1, 15.1-RELEASE-p1)
    2026-06-30 17:21:18 UTC (releng/15.0, 15.0-RELEASE-p11)
    2026-06-29 08:14:41 UTC (stable/14, 14.4-STABLE)
    2026-06-30 17:20:53 UTC (releng/14.4, 14.4-RELEASE-p7)
    2026-06-30 17:20:26 UTC (releng/14.3, 14.3-RELEASE-p16)

    For general information regarding FreeBSD Errata Notices and Security Advisories, including descriptions of the fields above, security
    branches, and the following sections, please visit <URL:https://security.FreeBSD.org/>.

    I. Background

    FreeBSD/arm64 supports running 32-bit (armv7) binaries via its
    freebsd32 compatibility layer.

    The setcontext(2) and swapcontext(2) system calls allow a process to
    save and restore its execution context.

    II. Problem Description

    The freebsd32 implementations of setcontext(2) and swapcontext(2) on
    arm64 returned incorrect values on success, causing the system call to
    be treated as though it had failed.

    III. Impact

    32-bit armv7 applications that use setcontext(2) or swapcontext(2)
    may crash or behave incorrectly when running on arm64 hosts. This
    has been observed to cause random crashes in Ruby applications in
    particular.

    IV. Workaround

    No workaround is available. Systems that do not run 32-bit armv7
    binaries on arm64 are not affected.

    V. Solution

    Upgrade your system to a supported FreeBSD stable or release / security
    branch (releng) dated after the correction date and reboot.

    Perform one of the following:

    1) To update your system installed from base system packages:

    Systems running a 15.0-RELEASE or later version of FreeBSD on the amd64 or arm64 platforms, which were installed using base system packages, can be updated via the pkg(8) utility:

    # pkg upgrade -r FreeBSD-base
    # shutdown -r now

    2) To update your system installed from binary distribution sets:

    Systems running a RELEASE version of FreeBSD on the amd64 or arm64 platforms which were not installed using base system packages can be updated via the freebsd-update(8) utility:

    # freebsd-update fetch
    # freebsd-update install
    # shutdown -r now

    3) To update your system via a source code patch:

    The following patches have been verified to apply to the applicable
    FreeBSD release branches.

    a) Download the relevant patch from the location below, and verify the
    detached PGP signature using your PGP utility.

    # fetch https://security.FreeBSD.org/patches/EN-26:16/arm64.patch
    # fetch https://security.FreeBSD.org/patches/EN-26:16/arm64.patch.asc
    # gpg --verify arm64.patch.asc

    b) Apply the patch. Execute the following commands as root:

    # cd /usr/src
    # patch -E -p0 < /path/to/patch

    c) Recompile your kernel as described in <URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
    system.

    VI. Correction details

    This issue is corrected as of the corresponding Git commit hash in the following stable and release branches:

    Branch/path Hash Revision
    - ------------------------------------------------------------------------- stable/15/ 964215aa1347 stable/15-n284267 releng/15.1/ a2235baa622b releng/15.1-n283563 releng/15.0/ b77d19dcc0d5 releng/15.0-n281065 stable/14/ 58a15fe75cc5 stable/14-n274442 releng/14.4/ f902821db095 releng/14.4-n273727 releng/14.3/ e96d0e1fccf5 releng/14.3-n271527
    - -------------------------------------------------------------------------

    Run the following command to see which files were modified by a
    particular commit:

    # git show --stat <commit hash>

    Or visit the following URL, replacing NNNNNN with the hash:

    <URL:https://cgit.freebsd.org/src/commit/?id=NNNNNN>

    To determine the commit count in a working tree (for comparison against
    nNNNNNN in the table above), run:

    # git rev-list --count --first-parent HEAD

    VII. References

    The latest revision of this advisory is available at <URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-26:16.arm64.asc> -----BEGIN PGP SIGNATURE-----

    iQJPBAEBCgA5FiEEthUnfoEIffdcgYM7bljekB8AGu8FAmpEEicbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzAAoJEG5Y3pAfABrvs+0P/1v4QrAHy1/m9y7/c4UY QNrdbnidEFMSzQiAUXaKJyJmIU9kTDlLcrsGgRw7r5KoUCux7DgW9gJ4xX9HgaDM X4x4a5BueaU5XJtUQ+tiMWm0TRsWpiGhBc6ZvqSiHVGwQHvQrrQ4T2nBl7NdM29G 19sdVRzjj/gvytXZCrQ9FJrkUkrWb24AX9HF6LmtIifphp47uLAdqGSZtDTLyvGZ U1zYTP0a4PETYaCk2gAfr8qQuZrx+7gDLFLnDJ9YPGIbhFVBv1ig1tMDHuwZed8o LsLf0pVoStazpnG+G+e8VHbA31I5hN041N9q2fNU79KFcLr1ADm7X6vEniL3pqsA CvhDq8WyQ9lhM7FLx9kfcFOOat/eWEBxjZN1gDU2asuROhcm1P9pVHlCTA5/96i2 y/HJSUYdIgScQQ6RVV5K0ZQSfj8gJF73twhmQqRXNXekUypMwVTw0E1wXFWIE80f kOtQmviV4j9R59efv+CTSZs73XVnx/yv97cayk/pRwxrc0ZNu3cc6B1GY7AZfu02 jx0bsOSLF/nBz+eQYSr8+jZTT+Qv5RY5ep0uDPmqlN/QBBvT+Mccdd3lWeBbuOah 8+qaGy360hfo3PVjv+e/yMkaXJ3Gmn766TvPn4LeTwSeL+SEzHrpF/Bq4jlBXP+C bdvDqx+46YN/96VdSl5KpnoK
    =+mor
    -----END PGP SIGNATURE-----


    --- PyGate Linux v1.5.18
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)