Defer calling SYSCTL_OUT() until after the locks have been released.

This commit is contained in:
truckman 2002-07-11 23:18:43 +00:00
parent fe3b828f84
commit 5d8999f18a
3 changed files with 10 additions and 5 deletions

View File

@ -941,12 +941,13 @@ tcp_getcred(SYSCTL_HANDLER_ARGS)
if (error)
goto out;
cru2x(inp->inp_socket->so_cred, &xuc);
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
out:
INP_UNLOCK(inp);
outunlocked:
INP_INFO_RUNLOCK(&tcbinfo);
splx(s);
if (error == 0)
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
return (error);
}
@ -1002,12 +1003,13 @@ tcp6_getcred(SYSCTL_HANDLER_ARGS)
if (error)
goto out;
cru2x(inp->inp_socket->so_cred, &xuc);
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
out:
INP_UNLOCK(inp);
outunlocked:
INP_INFO_RUNLOCK(&tcbinfo);
splx(s);
if (error == 0)
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
return (error);
}

View File

@ -941,12 +941,13 @@ tcp_getcred(SYSCTL_HANDLER_ARGS)
if (error)
goto out;
cru2x(inp->inp_socket->so_cred, &xuc);
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
out:
INP_UNLOCK(inp);
outunlocked:
INP_INFO_RUNLOCK(&tcbinfo);
splx(s);
if (error == 0)
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
return (error);
}
@ -1002,12 +1003,13 @@ tcp6_getcred(SYSCTL_HANDLER_ARGS)
if (error)
goto out;
cru2x(inp->inp_socket->so_cred, &xuc);
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
out:
INP_UNLOCK(inp);
outunlocked:
INP_INFO_RUNLOCK(&tcbinfo);
splx(s);
if (error == 0)
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
return (error);
}

View File

@ -689,10 +689,11 @@ udp_getcred(SYSCTL_HANDLER_ARGS)
if (error)
goto out;
cru2x(inp->inp_socket->so_cred, &xuc);
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
out:
INP_INFO_RUNLOCK(&udbinfo);
splx(s);
if (error == 0)
error = SYSCTL_OUT(req, &xuc, sizeof(struct xucred));
return (error);
}