The branch main has been updated by glebius:

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

commit b837f100e1c854d1f805b615f0bce5ede85f8552
Author:     Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2025-02-01 01:02:29 +0000
Commit:     Gleb Smirnoff <gleb...@freebsd.org>
CommitDate: 2025-02-01 09:00:26 +0000

    nfs: set vnet(9) context in mountnfs()
    
    This seems to be the right place to set it once and for all, without
    setting it deep in kgssapi/rpctls/etc leaf functions.
    
    Reviewed by:            rmacklem
    Differential Revision:  https://reviews.freebsd.org/D48558
---
 sys/fs/nfsclient/nfs_clvfsops.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sys/fs/nfsclient/nfs_clvfsops.c b/sys/fs/nfsclient/nfs_clvfsops.c
index 1cbe8e70867f..6bc67b342cbe 100644
--- a/sys/fs/nfsclient/nfs_clvfsops.c
+++ b/sys/fs/nfsclient/nfs_clvfsops.c
@@ -1524,12 +1524,14 @@ mountnfs(struct nfs_args *argp, struct mount *mp, 
struct sockaddr *nam,
 #endif
 
        NFSCL_DEBUG(3, "in mnt\n");
+       CURVNET_SET(CRED_TO_VNET(cred));
        clp = NULL;
        if (mp->mnt_flag & MNT_UPDATE) {
                nmp = VFSTONFS(mp);
                printf("%s: MNT_UPDATE is no longer handled here\n", __func__);
                free(nam, M_SONAME);
                free(tlscertname, M_NEWNFSMNT);
+               CURVNET_RESTORE();
                return (0);
        } else {
                /* NFS-over-TLS requires that rpctls be functioning. */
@@ -1544,6 +1546,7 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct 
sockaddr *nam,
                        if (error != 0) {
                                free(nam, M_SONAME);
                                free(tlscertname, M_NEWNFSMNT);
+                               CURVNET_RESTORE();
                                return (error);
                        }
                }
@@ -1816,6 +1819,7 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct 
sockaddr *nam,
                 */
                NFSVOPUNLOCK(*vpp);
                vfs_cache_root_set(mp, *vpp);
+               CURVNET_RESTORE();
                return (0);
        }
        error = EIO;
@@ -1844,6 +1848,7 @@ bad:
        free(nmp->nm_tlscertname, M_NEWNFSMNT);
        free(nmp, M_NEWNFSMNT);
        free(nam, M_SONAME);
+       CURVNET_RESTORE();
        return (error);
 }
 

Reply via email to