On Thu, Aug 31, 2023 at 04:25:37PM +0300, Vitaliy Makkoveev wrote:
> > NET_UNLOCK() and NET_LOCK_SHARED() just after each other does not
> > make much sense.  Just keep exclusive netlock for the few lines.
> 
> Agreed. Both the cases perform route sockets walkthrough and message
> transmission. No sense for lockless error path only.

OK bluhm@

> Index: sys/dev/usb/if_umb.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/if_umb.c,v
> retrieving revision 1.54
> diff -u -p -r1.54 if_umb.c
> --- sys/dev/usb/if_umb.c      29 Aug 2023 23:28:38 -0000      1.54
> +++ sys/dev/usb/if_umb.c      31 Aug 2023 13:20:21 -0000
> @@ -1851,7 +1851,6 @@ umb_add_inet_config(struct umb_softc *sc
>       info.rti_info[RTAX_GATEWAY] = sintosa(&ifra.ifra_dstaddr);
>  
>       rv = rtrequest(RTM_ADD, &info, 0, &rt, ifp->if_rdomain);
> -     NET_UNLOCK();
>       if (rv) {
>               printf("%s: unable to set IPv4 default route, "
>                   "error %d\n", DEVNAM(ifp->if_softc), rv);
> @@ -1862,6 +1861,7 @@ umb_add_inet_config(struct umb_softc *sc
>               rtm_send(rt, RTM_ADD, rv, ifp->if_rdomain);
>               rtfree(rt);
>       }
> +     NET_UNLOCK();
>  
>       if (ifp->if_flags & IFF_DEBUG) {
>               char str[3][INET_ADDRSTRLEN];
> @@ -1932,7 +1932,6 @@ umb_add_inet6_config(struct umb_softc *s
>       info.rti_info[RTAX_GATEWAY] = sin6tosa(&ifra.ifra_dstaddr);
>  
>       rv = rtrequest(RTM_ADD, &info, 0, &rt, ifp->if_rdomain);
> -     NET_UNLOCK();
>       if (rv) {
>               printf("%s: unable to set IPv6 default route, "
>                   "error %d\n", DEVNAM(ifp->if_softc), rv);
> @@ -1943,6 +1942,7 @@ umb_add_inet6_config(struct umb_softc *s
>               rtm_send(rt, RTM_ADD, rv, ifp->if_rdomain);
>               rtfree(rt);
>       }
> +     NET_UNLOCK();
>  
>       if (ifp->if_flags & IFF_DEBUG) {
>               char str[3][INET6_ADDRSTRLEN];

Reply via email to