diff options
Diffstat (limited to 'sys/rpc/rpc_generic.c')
-rw-r--r-- | sys/rpc/rpc_generic.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/rpc/rpc_generic.c b/sys/rpc/rpc_generic.c index 1c6aa82..fd39350 100644 --- a/sys/rpc/rpc_generic.c +++ b/sys/rpc/rpc_generic.c @@ -187,7 +187,9 @@ __rpc_socket2sockinfo(struct socket *so, struct __rpc_sockinfo *sip) struct sockopt opt; int error; + CURVNET_SET(so->so_vnet); error = so->so_proto->pr_usrreqs->pru_sockaddr(so, &sa); + CURVNET_RESTORE(); if (error) return 0; @@ -825,7 +827,6 @@ bindresvport(struct socket *so, struct sockaddr *sa) sa->sa_len = salen; if (*portp == 0) { - CURVNET_SET(so->so_vnet); bzero(&opt, sizeof(opt)); opt.sopt_dir = SOPT_GET; opt.sopt_level = proto; @@ -834,14 +835,12 @@ bindresvport(struct socket *so, struct sockaddr *sa) opt.sopt_valsize = sizeof(old); error = sogetopt(so, &opt); if (error) { - CURVNET_RESTORE(); goto out; } opt.sopt_dir = SOPT_SET; opt.sopt_val = &portlow; error = sosetopt(so, &opt); - CURVNET_RESTORE(); if (error) goto out; } @@ -852,9 +851,7 @@ bindresvport(struct socket *so, struct sockaddr *sa) if (error) { opt.sopt_dir = SOPT_SET; opt.sopt_val = &old; - CURVNET_SET(so->so_vnet); sosetopt(so, &opt); - CURVNET_RESTORE(); } } out: |