On Mon, Apr 17, 2023 at 02:16:14AM +0300, Vitaliy Makkoveev wrote:
> Also performs read-only access to netlock protected data.
rtable_getsource() needs kernel lock. But that problem does not
get worse by this diff.
OK bluhm@
> 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:12:25 -0000
> @@ -2159,7 +2159,7 @@ sysctl_rtable(int *name, u_int namelen,
> switch (w.w_op) {
> case NET_RT_DUMP:
> case NET_RT_FLAGS:
> - NET_LOCK();
> + NET_LOCK_SHARED();
> for (i = 1; i <= AF_MAX; i++) {
> if (af != 0 && af != i)
> continue;
> @@ -2171,7 +2171,7 @@ sysctl_rtable(int *name, u_int namelen,
> if (error)
> break;
> }
> - NET_UNLOCK();
> + NET_UNLOCK_SHARED();
> break;
>
> case NET_RT_IFLIST: