It seems rt_setsource() needs some attention, but sysctl_source() could
be called with shared netlock just now.

Index: sys/net/rtsock.c
===================================================================
RCS file: /cvs/src/sys/net/rtsock.c,v
retrieving revision 1.359
diff -u -p -r1.359 rtsock.c
--- sys/net/rtsock.c    22 Jan 2023 12:05:44 -0000      1.359
+++ sys/net/rtsock.c    16 Apr 2023 23:14:11 -0000
@@ -2201,7 +2201,7 @@ sysctl_rtable(int *name, u_int namelen, 
                tableid = w.w_arg;
                if (!rtable_exists(tableid))
                        return (ENOENT);
-               NET_LOCK();
+               NET_LOCK_SHARED();
                for (i = 1; i <= AF_MAX; i++) {
                        if (af != 0 && af != i)
                                continue;
@@ -2212,7 +2212,7 @@ sysctl_rtable(int *name, u_int namelen, 
                        if (error)
                                break;
                }
-               NET_UNLOCK();
+               NET_UNLOCK_SHARED();
                break;
        }
        free(w.w_tmem, M_RTABLE, w.w_tmemsize);

Reply via email to