Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Jun 2025 19:40:30 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 947bff6a04ed - main - vm/vm_mmap.c: simplify code by using the SET_ERRNOX() values
Message-ID:  <202506131940.55DJeUBY046776@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=947bff6a04ed9f508d8fd0e5e1d8ac56d8888e80

commit 947bff6a04ed9f508d8fd0e5e1d8ac56d8888e80
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-06-13 17:33:49 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-06-13 19:39:55 +0000

    vm/vm_mmap.c: simplify code by using the SET_ERRNOX() values
    
    to avoid duplicating the error values.
    
    Reviewed by:    markj
    Sponsored by:   The FreeBSD Foundation
    Differential revision:  https://reviews.freebsd.org/D50836
---
 sys/vm/vm_mmap.c | 79 +++++++++++++++++++++++---------------------------------
 1 file changed, 32 insertions(+), 47 deletions(-)

diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 8444a8cbf021..9ba2ec426d7f 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -192,14 +192,12 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	check_fp_fn = mrp->mr_check_fp_fn;
 
 	if ((prot & ~(_PROT_ALL | PROT_MAX(_PROT_ALL))) != 0) {
-		SET_ERROR0(EINVAL, "unknown PROT bits");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "unknown PROT bits"));
 	}
 	max_prot = PROT_MAX_EXTRACT(prot);
 	prot = PROT_EXTRACT(prot);
 	if (max_prot != 0 && (max_prot & prot) != prot) {
-		SET_ERROR0(ENOTSUP, "prot is not subset of max_prot");
-		return (ENOTSUP);
+		return (SET_ERROR0(ENOTSUP, "prot is not subset of max_prot"));
 	}
 
 	p = td->td_proc;
@@ -232,10 +230,9 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	if (!SV_CURPROC_FLAG(SV_AOUT)) {
 		if ((len == 0 && p->p_osrel >= P_OSREL_MAP_ANON) ||
 		    ((flags & MAP_ANON) != 0 && (fd != -1 || pos != 0))) {
-			SET_ERROR2(EINVAL,
+			return (SET_ERROR2(EINVAL,
 			    "offset not zero/fd not -1 for MAP_ANON",
-			    fd, pos);
-			return (EINVAL);
+			    fd, pos));
 		}
 	} else {
 		if ((flags & MAP_ANON) != 0)
@@ -245,8 +242,8 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	if (flags & MAP_STACK) {
 		if ((fd != -1) || ((prot & (PROT_READ | PROT_WRITE)) !=
 		    (PROT_READ | PROT_WRITE))) {
-			SET_ERROR1(EINVAL, "MAP_STACK with prot < rw", prot);
-			return (EINVAL);
+			return (SET_ERROR1(EINVAL, "MAP_STACK with prot < rw",
+			    prot));
 		}
 		flags |= MAP_ANON;
 		pos = 0;
@@ -255,28 +252,23 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	    MAP_STACK | MAP_NOSYNC | MAP_ANON | MAP_EXCL | MAP_NOCORE |
 	    MAP_PREFAULT_READ | MAP_GUARD | MAP_32BIT |
 	    MAP_ALIGNMENT_MASK)) != 0) {
-		SET_ERROR0(EINVAL, "reserved flag set");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "reserved flag set"));
 	}
 	if ((flags & (MAP_EXCL | MAP_FIXED)) == MAP_EXCL) {
-		SET_ERROR0(EINVAL, "EXCL without FIXED");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "EXCL without FIXED"));
 	}
 	if ((flags & (MAP_SHARED | MAP_PRIVATE)) == (MAP_SHARED |
 	    MAP_PRIVATE)) {
-		SET_ERROR0(EINVAL, "both SHARED and PRIVATE set");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "both SHARED and PRIVATE set"));
 	}
 	if (prot != PROT_NONE &&
 	    (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC)) != 0) {
-		SET_ERROR1(EINVAL, "invalid prot", prot);
-		return (EINVAL);
+		return (SET_ERROR1(EINVAL, "invalid prot", prot));
 	}
 	if ((flags & MAP_GUARD) != 0 && (prot != PROT_NONE || fd != -1 ||
 	    pos != 0 || (flags & ~(MAP_FIXED | MAP_GUARD | MAP_EXCL |
 	    MAP_32BIT | MAP_ALIGNMENT_MASK)) != 0)) {
-		SET_ERROR0(EINVAL, "GUARD with wrong parameters");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "GUARD with wrong parameters"));
 	}
 
 	/*
@@ -298,8 +290,7 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	if (align != 0 && align != MAP_ALIGNED_SUPER &&
 	    (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY ||
 	    align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT)) {
-		SET_ERROR1(EINVAL, "bad alignment", align);
-		return (EINVAL);
+		return (SET_ERROR1(EINVAL, "bad alignment", align));
 	}
 
 	/*
@@ -314,8 +305,8 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 		 */
 		addr -= pageoff;
 		if ((addr & PAGE_MASK) != 0) {
-			SET_ERROR1(EINVAL, "fixed mapping not aligned", addr);
-			return (EINVAL);
+			return (SET_ERROR1(EINVAL, "fixed mapping not aligned",
+			    addr));
 		}
 
 		/* Address range must be all in user VM space. */
@@ -324,9 +315,8 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 			return (EINVAL);
 		}
 		if (flags & MAP_32BIT && addr + size > MAP_32BIT_MAX_ADDR) {
-			SET_ERROR0(EINVAL,
-			    "fixed 32bit mapping does not fit into 4G");
-			return (EINVAL);
+			return (SET_ERROR0(EINVAL,
+			    "fixed 32bit mapping does not fit into 4G"));
 		}
 	} else if (flags & MAP_32BIT) {
 		/*
@@ -1324,8 +1314,7 @@ vm_mmap_vnode(struct thread *td, vm_size_t objsize,
 			vm_pager_update_writecount(obj, 0, objsize);
 		}
 	} else {
-		SET_ERROR0(EINVAL, "non-reg file");
-		error = EINVAL;
+		error = SET_ERROR0(EINVAL, "non-reg file");
 		goto done;
 	}
 	if ((error = VOP_GETATTR(vp, &va, cred)))
@@ -1416,8 +1405,7 @@ vm_mmap_cdev(struct thread *td, vm_size_t objsize, vm_prot_t prot,
 	    (prot & VM_PROT_WRITE) != 0)
 		return (EACCES);
 	if ((flags & (MAP_PRIVATE | MAP_COPY)) != 0) {
-		SET_ERROR0(EINVAL, "cdev mapping must be shared");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "cdev mapping must be shared"));
 	}
 
 	/*
@@ -1444,8 +1432,8 @@ vm_mmap_cdev(struct thread *td, vm_size_t objsize, vm_prot_t prot,
 	obj = vm_pager_allocate(OBJT_DEVICE, cdev, objsize, prot, *foff,
 	    td->td_ucred);
 	if (obj == NULL) {
-		SET_ERROR0(EINVAL, "cdev driver does not support mmap");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL,
+		    "cdev driver does not support mmap"));
 	}
 	*objp = obj;
 	*flagsp = flags;
@@ -1464,8 +1452,7 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
 	boolean_t writecounted;
 
 	if (size == 0) {
-		SET_ERROR0(EINVAL, "zero-sized req");
-		return (EINVAL);
+		return (SET_ERROR0(EINVAL, "zero-sized req"));
 	}
 
 	size = round_page(size);
@@ -1492,8 +1479,8 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
 		    handle, &foff, &object, &writecounted);
 		break;
 	default:
-		SET_ERROR1(EINVAL, "unsupported backing obj type", handle_type);
-		error = EINVAL;
+		error = SET_ERROR1(EINVAL, "unsupported backing obj type",
+		    handle_type);
 		break;
 	}
 	if (error)
@@ -1575,8 +1562,7 @@ vm_mmap_object(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
 	 * exec).
 	 */
 	if ((foff & PAGE_MASK) != 0) {
-		SET_ERROR1(EINVAL, "offset not page-aligned", foff);
-		return (EINVAL);
+		return (SET_ERROR1(EINVAL, "offset not page-aligned", foff));
 	}
 
 	if ((flags & MAP_FIXED) == 0) {
@@ -1584,21 +1570,20 @@ vm_mmap_object(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
 		*addr = round_page(*addr);
 	} else {
 		if (*addr != trunc_page(*addr)) {
-			SET_ERROR1(EINVAL,
-			    "non-fixed mapping address not aligned", *addr);
-			return (EINVAL);
+			return (SET_ERROR1(EINVAL,
+			    "non-fixed mapping address not aligned", *addr));
 		}
 		fitit = false;
 	}
 
 	if (flags & MAP_ANON) {
 		if (object != NULL) {
-			SET_ERROR0(EINVAL, "anon mapping backed by an object");
-			return (EINVAL);
+			return (SET_ERROR0(EINVAL,
+			    "anon mapping backed by an object"));
 		}
 		if (foff != 0) {
-			SET_ERROR0(EINVAL, "anon mapping with non-zero offset");
-			return (EINVAL);
+			return (SET_ERROR0(EINVAL,
+			    "anon mapping with non-zero offset"));
 		}
 		docow = 0;
 	} else if (flags & MAP_PREFAULT_READ)
@@ -1619,8 +1604,8 @@ vm_mmap_object(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
 		docow |= MAP_WRITECOUNT;
 	if (flags & MAP_STACK) {
 		if (object != NULL) {
-			SET_ERROR0(EINVAL, "stack mapping backed by an object");
-			return (EINVAL);
+			return (SET_ERROR0(EINVAL,
+			    "stack mapping backed by an object"));
 		}
 		docow |= MAP_STACK_AREA;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506131940.55DJeUBY046776>