git: d995dc937a3c - main - vm/vm_mmap.c: add two examples of using exterrors

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Sat, 31 May 2025 19:52:52 UTC
The branch main has been updated by kib:

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

commit d995dc937a3c999daa8e0675d1ec45f9ab422cb5
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-05-23 05:36:13 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-05-31 19:52:41 +0000

    vm/vm_mmap.c: add two examples of using exterrors
    
    Reviewed by:    brooks
    Sponsored by:   The FreeBSD Foundation
    MFC after:      2 weeks
    Differential revision:  https://reviews.freebsd.org/D50483
---
 sys/vm/vm_mmap.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index afc25965d73c..492233215d4b 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -40,13 +40,14 @@
  * Mapped file (mmap) interface to VM
  */
 
-#include <sys/cdefs.h>
 #include "opt_hwpmc_hooks.h"
 #include "opt_vm.h"
 
+#define	EXTERR_CATEGORY	EXTERR_CAT_MMAP
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/capsicum.h>
+#include <sys/exterrvar.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
@@ -190,12 +191,16 @@ kern_mmap(struct thread *td, const struct mmap_req *mrp)
 	pos = mrp->mr_pos;
 	check_fp_fn = mrp->mr_check_fp_fn;
 
-	if ((prot & ~(_PROT_ALL | PROT_MAX(_PROT_ALL))) != 0)
+	if ((prot & ~(_PROT_ALL | PROT_MAX(_PROT_ALL))) != 0) {
+		SET_ERROR0(EINVAL, "unknown PROT bits");
 		return (EINVAL);
+	}
 	max_prot = PROT_MAX_EXTRACT(prot);
 	prot = PROT_EXTRACT(prot);
-	if (max_prot != 0 && (max_prot & prot) != prot)
+	if (max_prot != 0 && (max_prot & prot) != prot) {
+		SET_ERROR0(ENOTSUP, "prot is not subset of max_prot");
 		return (ENOTSUP);
+	}
 
 	p = td->td_proc;