From nobody Thu Mar 26 05:48:11 2026 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fhCVg5NdZz6WFPp for ; Thu, 26 Mar 2026 05:48:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fhCVg4nvQz3b7s for ; Thu, 26 Mar 2026 05:48:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774504091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nh74RB8x9hZLjiE35xuSod3pkMgL0OF28iO/mIqAPy8=; b=q06VCvTgPAHPRTXG9vBALU6lfy9jk3R1Aubkb3r+mPgPILQBC2zFrXhobFPmnFd0RJxsMI F1cgxNLdjDHIC9RioEm68kyFFUpTMtJRAYq5vbZ9IA+NhGOgPGt5bpzE3hmxN8V6mRm6qI cGn5LHcvKt1UV6sGgmX/uME6qZb5GbtWmXh1DtaA3YMaQsYvnJS2DfT4XhvYbIywrD+Rxp 1tN2MiPwwrH4z/SfJeA+dOfkFU83Sw2S00ZIM0M0Qe06WB+t3z6ErTKiUDppdHlKlqVDDF 3QR+l418QBH2BtA+yR0aLyLyQv8qQxgbyPD47WlnhtaXMv9rbmFbLhN6I+vFUA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774504091; a=rsa-sha256; cv=none; b=Z9phRaq/IVjKim/mBJ76pu7Wy51vEL+NNNesBwA49U54FgXVD+cOBrypciWMFKpTmMlUDh RK2Pg12yEnf17g9D4BEG6sdBpdRmI9HERfx2uSsDRIvtXb1VH+lexJy2vxsGsW84kKEXvg HHuHOqQHXz1LRm7Ias9tZRIIw+z/4lmb9YuzF6rzJ2NeJkvY6rwsRiLX1+NGhCPR/dym9T S3a2cm0pRhfmWIj8Y8brXG3RCbFD04WBkjtCORCFvuLOssc29UvVA6pOcZNiaDEQpdObzJ m0MJWMrL1NHVKLtsLjMZvrsyUomV3AKU/8LxAa5G4kAUFEioYMo22sQ6yMBKOA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774504091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nh74RB8x9hZLjiE35xuSod3pkMgL0OF28iO/mIqAPy8=; b=R+M8RKCPpPyMvhR+DKiCMWP6u0BtIWCV8qYtV17bMp8HoF6VcKxcEmXW2G529XDETjMRAv RI+C1IN/6XMZFtQtwWRz28U3BSK6rNkSjIO58x0Z0O5Ku16CBNJkAt2YCDNXwJccIqIBRO BVSrLZGZXSm4j8l2+b4BILVcXrrjvc/QCHiAvGD8USCa/uZ+yPaeFMYnm+M50UyiNIREbI hw1igMUwqoJsgZVICr5vNP3uPosZYxbn3rTFKItWUwc/y64jQ8FGyD2+8tUHDFoyDka+WV xVwoHyzkSNegTORs1UJZz7jaJd8LbnYNvfHd7TVyU/WH5TXObsixCfqGxmXm6w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fhCVg43k4zg97 for ; Thu, 26 Mar 2026 05:48:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e389 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 26 Mar 2026 05:48:11 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kirk McKusick Subject: git: 981cd082a40e - stable/15 - Provide more precise error explanations for mmap(2) EINVAL errors. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 981cd082a40e92cdee66c1b24439bcd1d1b9fe32 Auto-Submitted: auto-generated Date: Thu, 26 Mar 2026 05:48:11 +0000 Message-Id: <69c4c89b.3e389.5971b610@gitrepo.freebsd.org> The branch stable/15 has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=981cd082a40e92cdee66c1b24439bcd1d1b9fe32 commit 981cd082a40e92cdee66c1b24439bcd1d1b9fe32 Author: Kirk McKusick AuthorDate: 2026-03-19 00:52:10 +0000 Commit: Kirk McKusick CommitDate: 2026-03-26 05:43:25 +0000 Provide more precise error explanations for mmap(2) EINVAL errors. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D55888 Sponsored by: Netflix (cherry picked from commit dad6e6fc1ea4b737e9f1661ebd30da5d551e3d4a) --- sys/vm/vm_mmap.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c index cb5906440f56..8d71bce67d58 100644 --- a/sys/vm/vm_mmap.c +++ b/sys/vm/vm_mmap.c @@ -235,11 +235,15 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp) * pos. */ if (!SV_CURPROC_FLAG(SV_AOUT)) { - if ((len == 0 && p->p_osrel >= P_OSREL_MAP_ANON) || - ((flags & MAP_ANON) != 0 && (fd != -1 || pos != 0))) { - return (EXTERROR(EINVAL, - "offset %#jd not zero/fd %#jd not -1 for MAP_ANON", - fd, pos)); + if (len == 0 && p->p_osrel >= P_OSREL_MAP_ANON) + return (EXTERROR(EINVAL, "mapping with zero length")); + if ((flags & MAP_ANON) != 0) { + if (fd != -1) + return (EXTERROR(EINVAL, + "fd %#jd not -1 for MAP_ANON", fd)); + if (pos != 0) + return (EXTERROR(EINVAL, + "offset %#jd not zero for MAP_ANON", pos)); } } else { if ((flags & MAP_ANON) != 0) @@ -293,10 +297,14 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp) /* Ensure alignment is at least a page and fits in a pointer. */ align = flags & MAP_ALIGNMENT_MASK; - if (align != 0 && align != MAP_ALIGNED_SUPER && - (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY || - align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT)) { - return (EXTERROR(EINVAL, "bad alignment %#jx", align)); + if (align != 0 && align != MAP_ALIGNED_SUPER) { + if (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY) + return (EXTERROR(EINVAL, "bad alignment %#jx >= %#jx", + align >> MAP_ALIGNMENT_SHIFT, + sizeof(void *) * NBBY)); + else if (align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT) + return (EXTERROR(EINVAL, "bad alignment %#jx < %#jx", + align >> MAP_ALIGNMENT_SHIFT, PAGE_SHIFT)); } /* @@ -312,15 +320,17 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp) addr -= pageoff; if ((addr & PAGE_MASK) != 0) { return (EXTERROR(EINVAL, - "fixed mapping at %#jx not aligned", addr)); + "fixed mapping at %#jx not page aligned %#jx", addr, + PAGE_SIZE)); } /* Address range must be all in user VM space. */ if (!vm_map_range_valid(&vms->vm_map, addr, addr + size)) { - EXTERROR(EINVAL, "mapping outside vm_map"); - return (EINVAL); + return (EXTERROR(EINVAL, + "mapping %#jx-%#jx outside vm_map", addr, + addr + size)); } - if (flags & MAP_32BIT && addr + size > MAP_32BIT_MAX_ADDR) { + if ((flags & MAP_32BIT) && addr + size > MAP_32BIT_MAX_ADDR) { return (EXTERROR(EINVAL, "fixed 32bit mapping of [%#jx %#jx] does not fit into 4G", addr, addr + size));