tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

VFS_MOUNT reverses sense of IMNT_MPSAFE test?



While hunting down a deadlock involving mount_null, I ran into a reversed test for IMNT_MPSAFE in VFS_MOUNT().  I'm not sure if this is what's causing my problem, but it's almost certainly wrong.  Is there something I'm missing, or should I commit?

Index: sys/kern/vfs_subr.c
===================================================================
RCS file: /cvsroot/src/sys/kern/vfs_subr.c,v
retrieving revision 1.502
diff -U 11 -r1.502 vfs_subr.c
--- sys/kern/vfs_subr.c 7 Dec 2024 02:27:38 -0000       1.502
+++ sys/kern/vfs_subr.c 7 May 2026 14:38:15 -0000
@@ -1480,27 +1480,27 @@
        int mpsafe = mp->mnt_iflag & IMNT_MPSAFE;
        int error;

        /*
         * Note: The first time through, the vfs_mount function may set
         * IMNT_MPSAFE, so we have to cache it on entry in order to
         * avoid leaking a kernel lock.
         *
         * XXX Maybe the MPSAFE bit should be set in struct vfsops and
         * not in struct mount.
         */
-       if (mpsafe) {
+       if (!mpsafe) {
                KERNEL_LOCK(1, NULL);
        }
        error = (*(mp->mnt_op->vfs_mount))(mp, a, b, c);
-       if (mpsafe) {
+       if (!mpsafe) {
                KERNEL_UNLOCK_ONE(NULL);
        }

        return error;
 }

Thanks,

--
Konrad Schroder
perseant%hhhh.org@localhost



Home | Main Index | Thread Index | Old Index