Hi, Thanks for the updates. I am testing the code now. Some minor fixes (so far):
changed all #ifdef CONFIG_SECURITY_NETWORKING to #ifdef CONFIG_SECURITY_NETWORK cheers, Catherine James Morris <[EMAIL PROTECTED]> wrote on 06/27/2006 09:57:15 AM: > On Tue, 27 Jun 2006, Stephen Smalley wrote: > > > What about saving the u32 seclen with the secdata, and using it later > > rather than recomputing strlen(secdata)? That also avoids encoding an > > assumption in the af_unix code about the content of the data (i.e. > > NUL-terminated string), leaving that to the security module. > > Ok, this and other issues are addressed in the patch below, which is now > back to a single patch. > > I also #ifdef'd the security fields in struct unix_skb_parms. > > Please review and test. > > --- > > include/asm-alpha/socket.h | 1 + > include/asm-arm/socket.h | 1 + > include/asm-arm26/socket.h | 1 + > include/asm-cris/socket.h | 1 + > include/asm-frv/socket.h | 1 + > include/asm-h8300/socket.h | 1 + > include/asm-i386/socket.h | 1 + > include/asm-ia64/socket.h | 1 + > include/asm-m32r/socket.h | 1 + > include/asm-m68k/socket.h | 1 + > include/asm-mips/socket.h | 1 + > include/asm-parisc/socket.h | 1 + > include/asm-powerpc/socket.h | 1 + > include/asm-s390/socket.h | 1 + > include/asm-sh/socket.h | 1 + > include/asm-sparc/socket.h | 1 + > include/asm-sparc64/socket.h | 1 + > include/asm-v850/socket.h | 1 + > include/asm-x86_64/socket.h | 1 + > include/asm-xtensa/socket.h | 1 + > include/linux/net.h | 1 + > include/linux/selinux.h | 15 +++++++++++++++ > include/net/af_unix.h | 7 +++++++ > include/net/scm.h | 17 +++++++++++++++++ > net/core/sock.c | 11 +++++++++++ > net/unix/af_unix.c | 25 +++++++++++++++++++++++++ > security/selinux/exports.c | 11 +++++++++++ > security/selinux/hooks.c | 8 +++++++- > 28 files changed, 114 insertions(+), 1 deletion(-) > > diff -purN -X dontdiff linux-2.6.o/include/asm-alpha/socket.h > linux-2.6.w/include/asm-alpha/socket.h > --- linux-2.6.o/include/asm-alpha/socket.h 2006-06-21 00:02:08. > 000000000 -0400 > +++ linux-2.6.w/include/asm-alpha/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -51,6 +51,7 @@ > #define SCM_TIMESTAMP SO_TIMESTAMP > > #define SO_PEERSEC 30 > +#define SO_PASSSEC 34 > > /* Security levels - as per NRL IPv6 - don't actually do anything */ > #define SO_SECURITY_AUTHENTICATION 19 > diff -purN -X dontdiff linux-2.6.o/include/asm-arm/socket.h linux-2. > 6.w/include/asm-arm/socket.h > --- linux-2.6.o/include/asm-arm/socket.h 2006-06-21 00:02:10.000000000 -0400 > +++ linux-2.6.w/include/asm-arm/socket.h 2006-06-27 02:08:49.000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-arm26/socket.h > linux-2.6.w/include/asm-arm26/socket.h > --- linux-2.6.o/include/asm-arm26/socket.h 2006-06-21 00:02:10. > 000000000 -0400 > +++ linux-2.6.w/include/asm-arm26/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-cris/socket.h > linux-2.6.w/include/asm-cris/socket.h > --- linux-2.6.o/include/asm-cris/socket.h 2006-06-21 00:02:11. > 000000000 -0400 > +++ linux-2.6.w/include/asm-cris/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -50,6 +50,7 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > > diff -purN -X dontdiff linux-2.6.o/include/asm-frv/socket.h linux-2. > 6.w/include/asm-frv/socket.h > --- linux-2.6.o/include/asm-frv/socket.h 2006-06-21 00:02:11.000000000 -0400 > +++ linux-2.6.w/include/asm-frv/socket.h 2006-06-27 02:08:49.000000000 -0400 > @@ -48,6 +48,7 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > > diff -purN -X dontdiff linux-2.6.o/include/asm-h8300/socket.h > linux-2.6.w/include/asm-h8300/socket.h > --- linux-2.6.o/include/asm-h8300/socket.h 2006-06-21 00:02:11. > 000000000 -0400 > +++ linux-2.6.w/include/asm-h8300/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-i386/socket.h > linux-2.6.w/include/asm-i386/socket.h > --- linux-2.6.o/include/asm-i386/socket.h 2006-06-21 00:02:12. > 000000000 -0400 > +++ linux-2.6.w/include/asm-i386/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-ia64/socket.h > linux-2.6.w/include/asm-ia64/socket.h > --- linux-2.6.o/include/asm-ia64/socket.h 2006-06-21 00:02:12. > 000000000 -0400 > +++ linux-2.6.w/include/asm-ia64/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -57,5 +57,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_IA64_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-m32r/socket.h > linux-2.6.w/include/asm-m32r/socket.h > --- linux-2.6.o/include/asm-m32r/socket.h 2006-06-21 00:02:13. > 000000000 -0400 > +++ linux-2.6.w/include/asm-m32r/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_M32R_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-m68k/socket.h > linux-2.6.w/include/asm-m68k/socket.h > --- linux-2.6.o/include/asm-m68k/socket.h 2006-06-21 00:02:13. > 000000000 -0400 > +++ linux-2.6.w/include/asm-m68k/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-mips/socket.h > linux-2.6.w/include/asm-mips/socket.h > --- linux-2.6.o/include/asm-mips/socket.h 2006-06-21 00:02:15. > 000000000 -0400 > +++ linux-2.6.w/include/asm-mips/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -69,6 +69,7 @@ To add: #define SO_REUSEPORT 0x0200 /* A > #define SO_PEERSEC 30 > #define SO_SNDBUFFORCE 31 > #define SO_RCVBUFFORCE 33 > +#define SO_PASSSEC 34 > > #ifdef __KERNEL__ > > diff -purN -X dontdiff linux-2.6.o/include/asm-parisc/socket.h > linux-2.6.w/include/asm-parisc/socket.h > --- linux-2.6.o/include/asm-parisc/socket.h 2006-06-21 00:02:15. > 000000000 -0400 > +++ linux-2.6.w/include/asm-parisc/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 0x401c > > #define SO_PEERSEC 0x401d > +#define SO_PASSSEC 0x401e > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-powerpc/socket.h > linux-2.6.w/include/asm-powerpc/socket.h > --- linux-2.6.o/include/asm-powerpc/socket.h 2006-06-21 00:02:16. > 000000000 -0400 > +++ linux-2.6.w/include/asm-powerpc/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -55,5 +55,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_POWERPC_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-s390/socket.h > linux-2.6.w/include/asm-s390/socket.h > --- linux-2.6.o/include/asm-s390/socket.h 2006-06-21 00:02:17. > 000000000 -0400 > +++ linux-2.6.w/include/asm-s390/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -56,5 +56,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-sh/socket.h linux-2. > 6.w/include/asm-sh/socket.h > --- linux-2.6.o/include/asm-sh/socket.h 2006-06-21 00:02:17.000000000 -0400 > +++ linux-2.6.w/include/asm-sh/socket.h 2006-06-27 02:08:49.000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* __ASM_SH_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-sparc/socket.h > linux-2.6.w/include/asm-sparc/socket.h > --- linux-2.6.o/include/asm-sparc/socket.h 2006-06-21 00:02:18. > 000000000 -0400 > +++ linux-2.6.w/include/asm-sparc/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,6 +48,7 @@ > #define SCM_TIMESTAMP SO_TIMESTAMP > > #define SO_PEERSEC 0x001e > +#define SO_PASSSEC 0x001f > > /* Security levels - as per NRL IPv6 - don't actually do anything */ > #define SO_SECURITY_AUTHENTICATION 0x5001 > diff -purN -X dontdiff linux-2.6.o/include/asm-sparc64/socket.h > linux-2.6.w/include/asm-sparc64/socket.h > --- linux-2.6.o/include/asm-sparc64/socket.h 2006-06-21 00:02:19. > 000000000 -0400 > +++ linux-2.6.w/include/asm-sparc64/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,6 +48,7 @@ > #define SCM_TIMESTAMP SO_TIMESTAMP > > #define SO_PEERSEC 0x001e > +#define SO_PASSSEC 0x001f > > /* Security levels - as per NRL IPv6 - don't actually do anything */ > #define SO_SECURITY_AUTHENTICATION 0x5001 > diff -purN -X dontdiff linux-2.6.o/include/asm-v850/socket.h > linux-2.6.w/include/asm-v850/socket.h > --- linux-2.6.o/include/asm-v850/socket.h 2006-06-21 00:02:20. > 000000000 -0400 > +++ linux-2.6.w/include/asm-v850/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* __V850_SOCKET_H__ */ > diff -purN -X dontdiff linux-2.6.o/include/asm-x86_64/socket.h > linux-2.6.w/include/asm-x86_64/socket.h > --- linux-2.6.o/include/asm-x86_64/socket.h 2006-06-21 00:02:20. > 000000000 -0400 > +++ linux-2.6.w/include/asm-x86_64/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -48,5 +48,6 @@ > #define SO_ACCEPTCONN 30 > > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _ASM_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/asm-xtensa/socket.h > linux-2.6.w/include/asm-xtensa/socket.h > --- linux-2.6.o/include/asm-xtensa/socket.h 2006-06-21 00:02:21. > 000000000 -0400 > +++ linux-2.6.w/include/asm-xtensa/socket.h 2006-06-27 02:08:49. > 000000000 -0400 > @@ -59,5 +59,6 @@ > > #define SO_ACCEPTCONN 30 > #define SO_PEERSEC 31 > +#define SO_PASSSEC 34 > > #endif /* _XTENSA_SOCKET_H */ > diff -purN -X dontdiff linux-2.6.o/include/linux/net.h linux-2.6. > w/include/linux/net.h > --- linux-2.6.o/include/linux/net.h 2006-06-21 00:02:23.000000000 -0400 > +++ linux-2.6.w/include/linux/net.h 2006-06-27 02:08:49.000000000 -0400 > @@ -61,6 +61,7 @@ typedef enum { > #define SOCK_ASYNC_WAITDATA 1 > #define SOCK_NOSPACE 2 > #define SOCK_PASSCRED 3 > +#define SOCK_PASSSEC 4 > > #ifndef ARCH_HAS_SOCKET_TYPES > /** > diff -purN -X dontdiff linux-2.6.o/include/linux/selinux.h linux-2. > 6.w/include/linux/selinux.h > --- linux-2.6.o/include/linux/selinux.h 2006-06-21 00:02:23.000000000 -0400 > +++ linux-2.6.w/include/linux/selinux.h 2006-06-27 02:18:47.000000000 -0400 > @@ -18,6 +18,7 @@ struct selinux_audit_rule; > struct audit_context; > struct inode; > struct kern_ipc_perm; > +struct socket; > > #ifdef CONFIG_SECURITY_SELINUX > > @@ -119,6 +120,15 @@ void selinux_get_ipc_sid(const struct ke > void selinux_get_task_sid(struct task_struct *tsk, u32 *sid); > > /** > + * selinux_get_sock_sid - return the SID of socket > + * @sock: the socket whose SID will be returned > + * @sid: pointer to security context ID to be filled in. > + * > + * Returns nothing > + */ > +void selinux_get_sock_sid(struct socket *sock, u32 *sid); > + > +/** > * selinux_string_to_sid - map a security context string to a security ID > * @str: the security context string to be mapped > * @sid: ID value returned via this. > @@ -193,6 +203,11 @@ static inline void selinux_get_task_sid( > *sid = 0; > } > > +static inline void selinux_get_sock_sid(struct socket *sock, u32 *sid) > +{ > + *sid = 0; > +} > + > static inline int selinux_string_to_sid(const char *str, u32 *sid) > { > *sid = 0; > diff -purN -X dontdiff linux-2.6.o/include/net/af_unix.h linux-2.6. > w/include/net/af_unix.h > --- linux-2.6.o/include/net/af_unix.h 2006-06-21 00:02:24.000000000 -0400 > +++ linux-2.6.w/include/net/af_unix.h 2006-06-27 09:28:04.000000000 -0400 > @@ -53,10 +53,17 @@ struct unix_address { > struct unix_skb_parms { > struct ucred creds; /* Skb credentials */ > struct scm_fp_list *fp; /* Passed files */ > +#ifdef CONFIG_SECURITY_NETWORKING > + char *secdata; /* Security context */ > + u32 seclen; /* Security length */ > +#endif > + > }; > > #define UNIXCB(skb) (*(struct unix_skb_parms*)&((skb)->cb)) > #define UNIXCREDS(skb) (&UNIXCB((skb)).creds) > +#define UNIXSECDATA(skb) (&UNIXCB((skb)).secdata) > +#define UNIXSECLEN(skb) (&UNIXCB((skb)).seclen) > > #define unix_state_rlock(s) spin_lock(&unix_sk(s)->lock) > #define unix_state_runlock(s) spin_unlock(&unix_sk(s)->lock) > diff -purN -X dontdiff linux-2.6.o/include/net/scm.h linux-2.6. > w/include/net/scm.h > --- linux-2.6.o/include/net/scm.h 2006-06-21 00:02:24.000000000 -0400 > +++ linux-2.6.w/include/net/scm.h 2006-06-27 09:32:27.000000000 -0400 > @@ -19,6 +19,10 @@ struct scm_cookie > { > struct ucred creds; /* Skb credentials */ > struct scm_fp_list *fp; /* Passed files */ > +#ifdef CONFIG_SECURITY_NETWORK > + char *secdata; /* Security context */ > + u32 seclen; /* Security length */ > +#endif > unsigned long seq; /* Connection seqno */ > }; > > @@ -48,6 +52,17 @@ static __inline__ int scm_send(struct so > return __scm_send(sock, msg, scm); > } > > +#ifdef CONFIG_SECURITY_NETWORK > +static inline void scm_passec(struct socket *sock, struct msghdr > *msg, struct scm_cookie *scm) > +{ > + if (test_bit(SOCK_PASSSEC, &sock->flags) && scm->secdata != NULL) > + put_cmsg(msg, SOL_SOCKET, SCM_SECURITY, scm->seclen, scm->secdata); > +} > +#else > +static inline void scm_passec(struct socket *sock, struct msghdr > *msg, struct scm_cookie *scm) > +{ } > +#endif /* CONFIG_SECURITY_NETWORK */ > + > static __inline__ void scm_recv(struct socket *sock, struct msghdr *msg, > struct scm_cookie *scm, int flags) > { > @@ -62,6 +77,8 @@ static __inline__ void scm_recv(struct s > if (test_bit(SOCK_PASSCRED, &sock->flags)) > put_cmsg(msg, SOL_SOCKET, SCM_CREDENTIALS, > sizeof(scm->creds), &scm->creds); > > + scm_passec(sock, msg, scm); > + > if (!scm->fp) > return; > > diff -purN -X dontdiff linux-2.6.o/net/core/sock.c linux-2.6.w/net/core/sock.c > --- linux-2.6.o/net/core/sock.c 2006-06-21 00:02:27.000000000 -0400 > +++ linux-2.6.w/net/core/sock.c 2006-06-27 02:08:49.000000000 -0400 > @@ -565,6 +565,13 @@ set_rcvbuf: > ret = -ENONET; > break; > > + case SO_PASSSEC: > + if (valbool) > + set_bit(SOCK_PASSSEC, &sock->flags); > + else > + clear_bit(SOCK_PASSSEC, &sock->flags); > + break; > + > /* We implement the SO_SNDLOWAT etc to > not be settable (1003.1g 5.3) */ > default: > @@ -723,6 +730,10 @@ int sock_getsockopt(struct socket *sock, > v.val = sk->sk_state == TCP_LISTEN; > break; > > + case SO_PASSSEC: > + v.val = test_bit(SOCK_PASSSEC, &sock->flags) ? 1 : 0; > + break; > + > case SO_PEERSEC: > return security_socket_getpeersec_stream(sock, optval, optlen, len); > > diff -purN -X dontdiff linux-2.6.o/net/unix/af_unix.c linux-2.6. > w/net/unix/af_unix.c > --- linux-2.6.o/net/unix/af_unix.c 2006-06-21 00:02:30.000000000 -0400 > +++ linux-2.6.w/net/unix/af_unix.c 2006-06-27 09:30:12.000000000 -0400 > @@ -128,6 +128,28 @@ static atomic_t unix_nr_socks = ATOMIC_I > > #define UNIX_ABSTRACT(sk) (unix_sk(sk)->addr->hash != UNIX_HASH_SIZE) > > +#ifdef CONFIG_SECURITY_NETWORKING > +static void unix_get_peersec_dgram(struct sk_buff *skb) > +{ > + err = security_socket_getpeersec_dgram(skb, UNIXSECDATA(skb), > + UNIXSECLEN(skb)); > + if (err) > + *(UNIXSEC(skb)) = NULL; > +} > + > +static inline void unix_set_secdata(struct scm_cookie *scm, struct > sk_buff *skb) > +{ > + scm->secdata = *UNIXSECDATA(skb); > + scm->seclen = UNIXSECLEN(skb); > +} > +#else > +static void unix_get_peersec_dgram(struct sk_buff *skb) > +{ } > + > +static inline void unix_set_secdata(struct scm_cookie *scm, struct > sk_buff *skb) > +{ } > +#endif /* CONFIG_SECURITY_NETWORKING */ > + > /* > * SMP locking strategy: > * hash table is protected with spinlock unix_table_lock > @@ -1291,6 +1313,8 @@ static int unix_dgram_sendmsg(struct kio > if (siocb->scm->fp) > unix_attach_fds(siocb->scm, skb); > > + unix_get_peersec_dgram(skb); > + > skb->h.raw = skb->data; > err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len); > if (err) > @@ -1570,6 +1594,7 @@ static int unix_dgram_recvmsg(struct kio > memset(&tmp_scm, 0, sizeof(tmp_scm)); > } > siocb->scm->creds = *UNIXCREDS(skb); > + unix_set_secdata(siocb->scm, skb); > > if (!(flags & MSG_PEEK)) > { > diff -purN -X dontdiff linux-2.6.o/security/selinux/exports.c > linux-2.6.w/security/selinux/exports.c > --- linux-2.6.o/security/selinux/exports.c 2006-06-21 00:02:31. > 000000000 -0400 > +++ linux-2.6.w/security/selinux/exports.c 2006-06-27 02:19:16. > 000000000 -0400 > @@ -17,6 +17,7 @@ > #include <linux/selinux.h> > #include <linux/fs.h> > #include <linux/ipc.h> > +#include <net/sock.h> > > #include "security.h" > #include "objsec.h" > @@ -72,6 +73,16 @@ void selinux_get_task_sid(struct task_st > *sid = 0; > } > > +void selinux_get_sock_sid(struct socket *sock, u32 *sid) > +{ > + if (selinux_enabled) { > + const struct inode *inode = SOCK_INODE(sock); > + selinux_get_inode_sid(inode, sid); > + return; > + } > + *sid = 0; > +} > + > int selinux_string_to_sid(char *str, u32 *sid) > { > if (selinux_enabled) > diff -purN -X dontdiff linux-2.6.o/security/selinux/hooks.c linux-2. > 6.w/security/selinux/hooks.c > --- linux-2.6.o/security/selinux/hooks.c 2006-06-26 14:47:31.000000000 -0400 > +++ linux-2.6.w/security/selinux/hooks.c 2006-06-27 02:08:49.000000000 -0400 > @@ -69,6 +69,7 @@ > #include <linux/sysctl.h> > #include <linux/audit.h> > #include <linux/string.h> > +#include <linux/selinux.h> > > #include "avc.h" > #include "objsec.h" > @@ -3418,7 +3419,12 @@ out: > static int selinux_socket_getpeersec_dgram(struct sk_buff *skb, > char **secdata, u32 *seclen) > { > int err = 0; > - u32 peer_sid = selinux_socket_getpeer_dgram(skb); > + u32 peer_sid; > + > + if (skb->sk->sk_family == PF_UNIX) > + selinux_get_sock_sid(skb->sk->sk_socket, &peer_sid); > + else > + peer_sid = selinux_socket_getpeer_dgram(skb); > > if (peer_sid == SECSID_NULL) > return -EINVAL; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html