The branch main has been updated by kib:

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

commit 38f5f2a4af5daeec7f13d39cad1ff4dc90da52d8
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2024-01-13 01:46:04 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2024-01-16 20:15:39 +0000

    sysctl vm.objects/vm.swap_objects: do not fill vnode info if jailed
    
    Reported by:    Shawn Webb via markj
    Reviewed by:    jhb, markj
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
---
 sys/vm/vm_object.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index 1dd6878cf4ab..905df5454355 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -67,6 +67,7 @@
 #include <sys/systm.h>
 #include <sys/blockcount.h>
 #include <sys/cpuset.h>
+#include <sys/jail.h>
 #include <sys/limits.h>
 #include <sys/lock.h>
 #include <sys/mman.h>
@@ -2515,6 +2516,7 @@ vm_object_list_handler(struct sysctl_req *req, bool 
swap_only)
        vm_page_t m;
        u_long sp;
        int count, error;
+       bool want_path;
 
        if (req->oldptr == NULL) {
                /*
@@ -2533,6 +2535,7 @@ vm_object_list_handler(struct sysctl_req *req, bool 
swap_only)
                    count * 11 / 10));
        }
 
+       want_path = !(swap_only || jailed(curthread->td_ucred));
        kvo = malloc(sizeof(*kvo), M_TEMP, M_WAITOK | M_ZERO);
        error = 0;
 
@@ -2584,7 +2587,8 @@ vm_object_list_handler(struct sysctl_req *req, bool 
swap_only)
                freepath = NULL;
                fullpath = "";
                vp = NULL;
-               kvo->kvo_type = vm_object_kvme_type(obj, swap_only ? NULL : 
&vp);
+               kvo->kvo_type = vm_object_kvme_type(obj, want_path ? &vp :
+                   NULL);
                if (vp != NULL) {
                        vref(vp);
                } else if ((obj->flags & OBJ_ANON) != 0) {

Reply via email to