From nobody Thu Mar 19 00:53:13 2026 X-Original-To: dev-commits-src-all@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 4fbnHY4xLbz6VP1B for ; Thu, 19 Mar 2026 00:53:13 +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 4fbnHY3spgz3vjW for ; Thu, 19 Mar 2026 00:53:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773881593; 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=bXQLhGl8lcnwCY4JupxB0ob9/pOjNJ1kZoAnuSrZj7Y=; b=TKVhd7CUnnr2eCu3L98wX0+L/IQXC5dJEm+QmUB8LuMF5vdS0eXxhqgU/vqvmbKeI5WpC4 j99tBslqS+PS4ArQWumIqKvMIRcExmy8f6k7mWA3gf+xKDHLSahapL+UDulEER+U6/kUIa PeP2pyUQ1+DGPfFO6KBnStsV0CDyjYERaF/8Qd8obqqrRNAuqMpb0yL4dL+A04CC6z5JgK vknCwNimZGMCVYTq20rfHIkbZ82FbNUlI+5ZKmAsAT67d+Fu2K1dT8B7wEvmvNMTZZXfKh upLa6O8Hag4GccCWZGJBkYJR1NXgppnENcBSo1YuAZqc1QuvW2jHYVUHsQbEpg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773881593; a=rsa-sha256; cv=none; b=Na2F1JqbOwG+HyEhGVrm6Pww7CGH+VCuAmT2BxBGb6PZEDE7TtypalCVv3hJFOJVuOKClR DTip+AFrimCxCgL25+RFLNV7qibS9e2eCdtkciX6+qLNKryKnJIpa/+1LkK3Ws63j3rJL2 svrYFj/0MPuqyKlMWKVw90LdhXubSmziHccL+OwZqM5Rf29L9/CCeU9g3rAIgOEOIpsTxg v/Mb60+vkiv4D2sbZeou6TQTHnvuUxjguVNBrAriNoLOL7pQyabLtiEejVxvZx7PZtjICv exh5XkIkOachl/cX/fpk71fEhB7LOCzYRYUlnYLS06N9BZxPpRJxBcZe9XioXg== 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=1773881593; 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=bXQLhGl8lcnwCY4JupxB0ob9/pOjNJ1kZoAnuSrZj7Y=; b=vEtnfxuESPPx+LBAb4p2cgzgGeNtVZyj04CkJRrg1uAzpxiZCjmn7cL3dFFBrKTEJZ7LmK SXkmJwgy9xAzKWyLp+vi2OBsDFjkPaj505JFccxFuF/6xwfDF2HSIVjWRGVKR+phM8LGl5 M9qt1g5ZCkxvSboLv/CfexL+8VgIusfrVu/WHDRPT2y7YQ03ovqql9ZSmdKghvzgj9tx3S JyTXAz3g2jeKSytdy4xmdFubwdBQuRDsSAjezcdWq+kOe+sN1XRTD2Pyu/kX0TtML5xM53 XTlJ+t5jf4AQ33P9uoty3TmZf76/ryw68+cy0ddq2aSEGw6Kp8bH30B57yHnXg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fbnHY3HN4zYxs for ; Thu, 19 Mar 2026 00:53:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3b95a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 19 Mar 2026 00:53:13 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kirk McKusick Subject: git: dad6e6fc1ea4 - main - Provide more precise error explanations for mmap(2) EINVAL errors. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/main X-Git-Reftype: branch X-Git-Commit: dad6e6fc1ea4b737e9f1661ebd30da5d551e3d4a Auto-Submitted: auto-generated Date: Thu, 19 Mar 2026 00:53:13 +0000 Message-Id: <69bb48f9.3b95a.4b5de567@gitrepo.freebsd.org> The branch main has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=dad6e6fc1ea4b737e9f1661ebd30da5d551e3d4a commit dad6e6fc1ea4b737e9f1661ebd30da5d551e3d4a Author: Kirk McKusick AuthorDate: 2026-03-19 00:52:10 +0000 Commit: Kirk McKusick CommitDate: 2026-03-19 00:52:10 +0000 Provide more precise error explanations for mmap(2) EINVAL errors. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D55888 MFC-after: 1 week Sponsored by: Netflix --- 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));