Lines Matching refs:scm
141 static void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) in unix_get_secdata() argument
143 UNIXCB(skb).secid = scm->secid; in unix_get_secdata()
146 static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) in unix_set_secdata() argument
148 scm->secid = UNIXCB(skb).secid; in unix_set_secdata()
151 static inline bool unix_secdata_eq(struct scm_cookie *scm, struct sk_buff *skb) in unix_secdata_eq() argument
153 return (scm->secid == UNIXCB(skb).secid); in unix_secdata_eq()
156 static inline void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) in unix_get_secdata() argument
159 static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) in unix_set_secdata() argument
162 static inline bool unix_secdata_eq(struct scm_cookie *scm, struct sk_buff *skb) in unix_secdata_eq() argument
1491 static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb) in unix_detach_fds() argument
1495 scm->fp = UNIXCB(skb).fp; in unix_detach_fds()
1498 for (i = scm->fp->count-1; i >= 0; i--) in unix_detach_fds()
1499 unix_notinflight(scm->fp->user, scm->fp->fp[i]); in unix_detach_fds()
1504 struct scm_cookie scm; in unix_destruct_scm() local
1505 memset(&scm, 0, sizeof(scm)); in unix_destruct_scm()
1506 scm.pid = UNIXCB(skb).pid; in unix_destruct_scm()
1508 unix_detach_fds(&scm, skb); in unix_destruct_scm()
1512 scm_destroy(&scm); in unix_destruct_scm()
1533 static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb) in unix_attach_fds() argument
1542 for (i = scm->fp->count - 1; i >= 0; i--) { in unix_attach_fds()
1543 struct sock *sk = unix_get_socket(scm->fp->fp[i]); in unix_attach_fds()
1559 UNIXCB(skb).fp = scm_fp_dup(scm->fp); in unix_attach_fds()
1563 for (i = scm->fp->count - 1; i >= 0; i--) in unix_attach_fds()
1564 unix_inflight(scm->fp->user, scm->fp->fp[i]); in unix_attach_fds()
1568 static int unix_scm_to_skb(struct scm_cookie *scm, struct sk_buff *skb, bool send_fds) in unix_scm_to_skb() argument
1572 UNIXCB(skb).pid = get_pid(scm->pid); in unix_scm_to_skb()
1573 UNIXCB(skb).uid = scm->creds.uid; in unix_scm_to_skb()
1574 UNIXCB(skb).gid = scm->creds.gid; in unix_scm_to_skb()
1576 unix_get_secdata(scm, skb); in unix_scm_to_skb()
1577 if (scm->fp && send_fds) in unix_scm_to_skb()
1578 err = unix_attach_fds(scm, skb); in unix_scm_to_skb()
1608 static int maybe_init_creds(struct scm_cookie *scm, in maybe_init_creds() argument
1615 err = scm_send(socket, &msg, scm, false); in maybe_init_creds()
1620 scm->pid = get_pid(task_tgid(current)); in maybe_init_creds()
1621 current_uid_gid(&scm->creds.uid, &scm->creds.gid); in maybe_init_creds()
1627 struct scm_cookie *scm) in unix_skb_scm_eq() argument
1631 return u->pid == scm->pid && in unix_skb_scm_eq()
1632 uid_eq(u->uid, scm->creds.uid) && in unix_skb_scm_eq()
1633 gid_eq(u->gid, scm->creds.gid) && in unix_skb_scm_eq()
1634 unix_secdata_eq(scm, skb); in unix_skb_scm_eq()
1654 struct scm_cookie scm; in unix_dgram_sendmsg() local
1660 err = scm_send(sock, msg, &scm, false); in unix_dgram_sendmsg()
1704 err = unix_scm_to_skb(&scm, skb, true); in unix_dgram_sendmsg()
1830 scm_destroy(&scm); in unix_dgram_sendmsg()
1842 scm_destroy(&scm); in unix_dgram_sendmsg()
1859 struct scm_cookie scm; in unix_stream_sendmsg() local
1865 err = scm_send(sock, msg, &scm, false); in unix_stream_sendmsg()
1906 err = unix_scm_to_skb(&scm, skb, !fds_sent); in unix_stream_sendmsg()
1938 scm_destroy(&scm); in unix_stream_sendmsg()
1950 scm_destroy(&scm); in unix_stream_sendmsg()
1960 struct scm_cookie scm; in unix_stream_sendpage() local
2006 err = maybe_init_creds(&scm, socket, other); in unix_stream_sendpage()
2015 } else if (!skb || !unix_skb_scm_eq(skb, &scm)) { in unix_stream_sendpage()
2042 err = unix_scm_to_skb(&scm, skb, false); in unix_stream_sendpage()
2054 scm_destroy(&scm); in unix_stream_sendpage()
2066 scm_destroy(&scm); in unix_stream_sendpage()
2113 struct scm_cookie scm; in unix_dgram_recvmsg() local
2165 memset(&scm, 0, sizeof(scm)); in unix_dgram_recvmsg()
2167 scm_set_cred(&scm, UNIXCB(skb).pid, UNIXCB(skb).uid, UNIXCB(skb).gid); in unix_dgram_recvmsg()
2168 unix_set_secdata(&scm, skb); in unix_dgram_recvmsg()
2172 unix_detach_fds(&scm, skb); in unix_dgram_recvmsg()
2192 scm.fp = scm_fp_dup(UNIXCB(skb).fp); in unix_dgram_recvmsg()
2196 scm_recv(sock, msg, &scm, flags); in unix_dgram_recvmsg()
2263 struct scm_cookie scm; in unix_stream_read_generic() local
2291 memset(&scm, 0, sizeof(scm)); in unix_stream_read_generic()
2344 scm_destroy(&scm); in unix_stream_read_generic()
2368 if (!unix_skb_scm_eq(skb, &scm)) in unix_stream_read_generic()
2372 scm_set_cred(&scm, UNIXCB(skb).pid, UNIXCB(skb).uid, UNIXCB(skb).gid); in unix_stream_read_generic()
2373 unix_set_secdata(&scm, skb); in unix_stream_read_generic()
2418 unix_detach_fds(&scm, skb); in unix_stream_read_generic()
2426 if (scm.fp) in unix_stream_read_generic()
2432 scm.fp = scm_fp_dup(UNIXCB(skb).fp); in unix_stream_read_generic()
2453 scm_recv(sock, state->msg, &scm, flags); in unix_stream_read_generic()
2455 scm_destroy(&scm); in unix_stream_read_generic()