Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/uipc_usrreq.c
Show First 20 Lines • Show All 2,040 Lines • ▼ Show 20 Lines | if (cm->cmsg_level == SOL_SOCKET | ||||
goto next; | goto next; | ||||
} | } | ||||
for (i = 0; i < newfds; i++, fdp++) { | for (i = 0; i < newfds; i++, fdp++) { | ||||
_finstall(fdesc, fdep[i]->fde_file, *fdp, | _finstall(fdesc, fdep[i]->fde_file, *fdp, | ||||
(flags & MSG_CMSG_CLOEXEC) != 0 ? UF_EXCLOSE : 0, | (flags & MSG_CMSG_CLOEXEC) != 0 ? UF_EXCLOSE : 0, | ||||
&fdep[i]->fde_caps); | &fdep[i]->fde_caps); | ||||
unp_externalize_fp(fdep[i]->fde_file); | unp_externalize_fp(fdep[i]->fde_file); | ||||
} | } | ||||
/* | |||||
* The new type indicates that the mbuf data refers to | |||||
* kernel resources that may need to be released before | |||||
* the mbuf is freed. | |||||
*/ | |||||
m_chtype(*controlp, MT_EXTCONTROL); | |||||
FILEDESC_XUNLOCK(fdesc); | FILEDESC_XUNLOCK(fdesc); | ||||
free(fdep[0], M_FILECAPS); | free(fdep[0], M_FILECAPS); | ||||
} else { | } else { | ||||
/* We can just copy anything else across. */ | /* We can just copy anything else across. */ | ||||
if (error || controlp == NULL) | if (error || controlp == NULL) | ||||
goto next; | goto next; | ||||
*controlp = sbcreatecontrol(NULL, datalen, | *controlp = sbcreatecontrol(NULL, datalen, | ||||
cm->cmsg_type, cm->cmsg_level); | cm->cmsg_type, cm->cmsg_level); | ||||
▲ Show 20 Lines • Show All 759 Lines • Show Last 20 Lines |