Lines Matching refs:msg
137 int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *p) in __scm_send() argument
142 for_each_cmsghdr(cmsg, msg) { in __scm_send()
153 if (!CMSG_OK(msg, cmsg)) in __scm_send()
219 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) in put_cmsg() argument
223 if (msg->msg_flags & MSG_CMSG_COMPAT) in put_cmsg()
224 return put_cmsg_compat(msg, level, type, len, data); in put_cmsg()
226 if (!msg->msg_control || msg->msg_controllen < sizeof(struct cmsghdr)) { in put_cmsg()
227 msg->msg_flags |= MSG_CTRUNC; in put_cmsg()
230 if (msg->msg_controllen < cmlen) { in put_cmsg()
231 msg->msg_flags |= MSG_CTRUNC; in put_cmsg()
232 cmlen = msg->msg_controllen; in put_cmsg()
235 if (msg->msg_control_is_user) { in put_cmsg()
236 struct cmsghdr __user *cm = msg->msg_control_user; in put_cmsg()
246 struct cmsghdr *cm = msg->msg_control; in put_cmsg()
254 cmlen = min(CMSG_SPACE(len), msg->msg_controllen); in put_cmsg()
255 msg->msg_control += cmlen; in put_cmsg()
256 msg->msg_controllen -= cmlen; in put_cmsg()
261 void put_cmsg_scm_timestamping64(struct msghdr *msg, struct scm_timestamping_internal *tss_internal) in put_cmsg_scm_timestamping64() argument
271 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPING_NEW, sizeof(tss), &tss); in put_cmsg_scm_timestamping64()
275 void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timestamping_internal *tss_internal) in put_cmsg_scm_timestamping() argument
285 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPING_OLD, sizeof(tss), &tss); in put_cmsg_scm_timestamping()
289 static int scm_max_fds(struct msghdr *msg) in scm_max_fds() argument
291 if (msg->msg_controllen <= sizeof(struct cmsghdr)) in scm_max_fds()
293 return (msg->msg_controllen - sizeof(struct cmsghdr)) / sizeof(int); in scm_max_fds()
296 void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) in scm_detach_fds() argument
299 (__force struct cmsghdr __user *)msg->msg_control; in scm_detach_fds()
300 unsigned int o_flags = (msg->msg_flags & MSG_CMSG_CLOEXEC) ? O_CLOEXEC : 0; in scm_detach_fds()
301 int fdmax = min_t(int, scm_max_fds(msg), scm->fp->count); in scm_detach_fds()
306 if (WARN_ON_ONCE(!msg->msg_control_is_user)) in scm_detach_fds()
309 if (msg->msg_flags & MSG_CMSG_COMPAT) { in scm_detach_fds()
310 scm_detach_fds_compat(msg, scm); in scm_detach_fds()
330 if (msg->msg_controllen < cmlen) in scm_detach_fds()
331 cmlen = msg->msg_controllen; in scm_detach_fds()
332 msg->msg_control += cmlen; in scm_detach_fds()
333 msg->msg_controllen -= cmlen; in scm_detach_fds()
338 msg->msg_flags |= MSG_CTRUNC; in scm_detach_fds()