Files
FAT-Allocator/dpdk/kernel/freebsd/contigmem/cheribsd.patch

43 lines
1.4 KiB
Diff

diff --git a/share/mk/bsd.sysdir.mk b/share/mk/bsd.sysdir.mk
index 665905e1d53..2205f2395f2 100644
--- a/share/mk/bsd.sysdir.mk
+++ b/share/mk/bsd.sysdir.mk
@@ -14,3 +14,5 @@ SYSDIR= ${_dir:tA}
!exists(${SYSDIR}/conf/kmod.mk)
.error Unable to locate the kernel source tree. Set SYSDIR to override.
.endif
+
+ZFSTOP=${SYSDIR}/contrib/subrepo-openzfs
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index eb69c91c04e..6ecc5cc3eb3 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -1916,6 +1916,9 @@ vm_mmap_cdev(struct thread *td, vm_size_t objsize, vm_prot_t *protp,
if (error != 0)
return (error);
#endif
+ *protp = prot = VM_PROT_ADD_CAP(*protp);
+ *maxprotp = VM_PROT_ADD_CAP(*maxprotp);
+
/*
* First, try d_mmap_single(). If that is not implemented
* (returns ENODEV), fall back to using the device pager.
@@ -1926,12 +1929,16 @@ vm_mmap_cdev(struct thread *td, vm_size_t objsize, vm_prot_t *protp,
* XXX assumes VM_PROT_* == PROT_*
*/
error = dsw->d_mmap_single(cdev, foff, objsize, objp, (int)prot);
- if (error != ENODEV)
+ if (error != ENODEV) {
+ if (error == 0)
+ vm_object_set_flag(*objp, OBJ_HASCAP);
return (error);
+ }
obj = vm_pager_allocate(OBJT_DEVICE, cdev, objsize, prot, *foff,
td->td_ucred);
if (obj == NULL)
return (EINVAL);
+ vm_object_set_flag(obj, OBJ_HASCAP);
*objp = obj;
*flagsp = flags;
return (0);