Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/uipc_usrreq.c
Show First 20 Lines • Show All 665 Lines • ▼ Show 20 Lines | error = mac_vnode_check_create(td->td_ucred, nd.ni_dvp, &nd.ni_cnd, | ||||
&vattr); | &vattr); | ||||
#endif | #endif | ||||
if (error == 0) | if (error == 0) | ||||
error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); | error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); | ||||
NDFREE(&nd, NDF_ONLY_PNBUF); | NDFREE(&nd, NDF_ONLY_PNBUF); | ||||
vput(nd.ni_dvp); | vput(nd.ni_dvp); | ||||
if (error) { | if (error) { | ||||
vn_finished_write(mp); | vn_finished_write(mp); | ||||
if (error == ERELOOKUP) | |||||
goto restart; | |||||
goto error; | goto error; | ||||
} | } | ||||
vp = nd.ni_vp; | vp = nd.ni_vp; | ||||
ASSERT_VOP_ELOCKED(vp, "uipc_bind"); | ASSERT_VOP_ELOCKED(vp, "uipc_bind"); | ||||
soun = (struct sockaddr_un *)sodupsockaddr(nam, M_WAITOK); | soun = (struct sockaddr_un *)sodupsockaddr(nam, M_WAITOK); | ||||
UNP_PCB_LOCK(unp); | UNP_PCB_LOCK(unp); | ||||
VOP_UNP_BIND(vp, unp); | VOP_UNP_BIND(vp, unp); | ||||
▲ Show 20 Lines • Show All 2,284 Lines • Show Last 20 Lines |