Forgot to say, rt_timer_remove_all() and ifafree() could be moved out of
kernel lock too, but with next diff.

On Wed, Apr 19, 2023 at 05:03:00PM +0300, Vitaliy Makkoveev wrote:
> Index: sys/net/route.c
> ===================================================================
> RCS file: /cvs/src/sys/net/route.c,v
> retrieving revision 1.416
> diff -u -p -r1.416 route.c
> --- sys/net/route.c   28 Jan 2023 10:17:16 -0000      1.416
> +++ sys/net/route.c   19 Apr 2023 14:00:31 -0000
> @@ -504,9 +504,10 @@ rtfree(struct rtentry *rt)
>  #ifdef MPLS
>       rt_mpls_clear(rt);
>  #endif
> +     KERNEL_UNLOCK();
> +
>       free(rt->rt_gateway, M_RTABLE, ROUNDUP(rt->rt_gateway->sa_len));
>       free(rt_key(rt), M_RTABLE, rt_key(rt)->sa_len);
> -     KERNEL_UNLOCK();
>  
>       pool_put(&rtentry_pool, rt);
>  }

Reply via email to