Lines Matching refs:msg

137 int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *p)  in __scm_send()  argument
143 for_each_cmsghdr(cmsg, msg) { in __scm_send()
154 if (!CMSG_OK(msg, cmsg)) in __scm_send()
220 int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data) in put_cmsg() argument
224 if (msg->msg_flags & MSG_CMSG_COMPAT) in put_cmsg()
225 return put_cmsg_compat(msg, level, type, len, data); in put_cmsg()
227 if (!msg->msg_control || msg->msg_controllen < sizeof(struct cmsghdr)) { in put_cmsg()
228 msg->msg_flags |= MSG_CTRUNC; in put_cmsg()
231 if (msg->msg_controllen < cmlen) { in put_cmsg()
232 msg->msg_flags |= MSG_CTRUNC; in put_cmsg()
233 cmlen = msg->msg_controllen; in put_cmsg()
236 if (msg->msg_control_is_user) { in put_cmsg()
237 struct cmsghdr __user *cm = msg->msg_control_user; in put_cmsg()
251 struct cmsghdr *cm = msg->msg_control; in put_cmsg()
259 cmlen = min(CMSG_SPACE(len), msg->msg_controllen); in put_cmsg()
260 if (msg->msg_control_is_user) in put_cmsg()
261 msg->msg_control_user += cmlen; in put_cmsg()
263 msg->msg_control += cmlen; in put_cmsg()
264 msg->msg_controllen -= cmlen; in put_cmsg()
274 void put_cmsg_scm_timestamping64(struct msghdr *msg, struct scm_timestamping_internal *tss_internal) in put_cmsg_scm_timestamping64() argument
284 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPING_NEW, sizeof(tss), &tss); in put_cmsg_scm_timestamping64()
288 void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timestamping_internal *tss_internal) in put_cmsg_scm_timestamping() argument
298 put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMPING_OLD, sizeof(tss), &tss); in put_cmsg_scm_timestamping()
302 static int scm_max_fds(struct msghdr *msg) in scm_max_fds() argument
304 if (msg->msg_controllen <= sizeof(struct cmsghdr)) in scm_max_fds()
306 return (msg->msg_controllen - sizeof(struct cmsghdr)) / sizeof(int); in scm_max_fds()
309 void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm) in scm_detach_fds() argument
312 (__force struct cmsghdr __user *)msg->msg_control_user; in scm_detach_fds()
313 unsigned int o_flags = (msg->msg_flags & MSG_CMSG_CLOEXEC) ? O_CLOEXEC : 0; in scm_detach_fds()
314 int fdmax = min_t(int, scm_max_fds(msg), scm->fp->count); in scm_detach_fds()
319 if (WARN_ON_ONCE(!msg->msg_control_is_user)) in scm_detach_fds()
322 if (msg->msg_flags & MSG_CMSG_COMPAT) { in scm_detach_fds()
323 scm_detach_fds_compat(msg, scm); in scm_detach_fds()
343 if (msg->msg_controllen < cmlen) in scm_detach_fds()
344 cmlen = msg->msg_controllen; in scm_detach_fds()
345 msg->msg_control_user += cmlen; in scm_detach_fds()
346 msg->msg_controllen -= cmlen; in scm_detach_fds()
351 msg->msg_flags |= MSG_CTRUNC; in scm_detach_fds()