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