diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-03 01:35:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-03 01:35:26 -0400 |
| commit | 46f5960fdbf359f0c75989854bbaebc1de7a1eb4 (patch) | |
| tree | 132d8d0eba110342bb88fcce2519c441ac771162 /net/unix/af_unix.c | |
| parent | 90eb29efd0ca9301d80d03ea13662d32436f060e (diff) | |
| parent | 29bbd72d6ee1dbf2d9f00d022f8e999aa528fb3a (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (32 commits)
[NET]: Fix more per-cpu typos
[SECURITY]: Fix build with CONFIG_SECURITY disabled.
[I/OAT]: Remove CPU hotplug lock from net_dma_rebalance
[DECNET]: Fix for routing bug
[AF_UNIX]: Kernel memory leak fix for af_unix datagram getpeersec patch
[NET]: skb_queue_lock_key() is no longer used.
[NET]: Remove lockdep_set_class() call from skb_queue_head_init().
[IPV6]: SNMPv2 "ipv6IfStatsOutFragCreates" counter error
[IPV6]: SNMPv2 "ipv6IfStatsInHdrErrors" counter error
[NET]: Kill the WARN_ON() calls for checksum fixups.
[NETFILTER]: xt_hashlimit/xt_string: missing string validation
[NETFILTER]: SIP helper: expect RTP streams in both directions
[E1000]: Convert to netdev_alloc_skb
[TG3]: Convert to netdev_alloc_skb
[NET]: Add netdev_alloc_skb().
[TCP]: Process linger2 timeout consistently.
[SECURITY] secmark: nul-terminate secdata
[NET] infiniband: Cleanup ib_addr module to use the netevents
[NET]: Core net changes to generate netevents
[NET]: Network Event Notifier Mechanism.
...
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 6f2909279268..de6ec519272e 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -128,23 +128,17 @@ static atomic_t unix_nr_socks = ATOMIC_INIT(0); | |||
| 128 | #define UNIX_ABSTRACT(sk) (unix_sk(sk)->addr->hash != UNIX_HASH_SIZE) | 128 | #define UNIX_ABSTRACT(sk) (unix_sk(sk)->addr->hash != UNIX_HASH_SIZE) |
| 129 | 129 | ||
| 130 | #ifdef CONFIG_SECURITY_NETWORK | 130 | #ifdef CONFIG_SECURITY_NETWORK |
| 131 | static void unix_get_peersec_dgram(struct sk_buff *skb) | 131 | static void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) |
| 132 | { | 132 | { |
| 133 | int err; | 133 | memcpy(UNIXSID(skb), &scm->secid, sizeof(u32)); |
| 134 | |||
| 135 | err = security_socket_getpeersec_dgram(skb, UNIXSECDATA(skb), | ||
| 136 | UNIXSECLEN(skb)); | ||
| 137 | if (err) | ||
| 138 | *(UNIXSECDATA(skb)) = NULL; | ||
| 139 | } | 134 | } |
| 140 | 135 | ||
| 141 | static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) | 136 | static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) |
| 142 | { | 137 | { |
| 143 | scm->secdata = *UNIXSECDATA(skb); | 138 | scm->secid = *UNIXSID(skb); |
| 144 | scm->seclen = *UNIXSECLEN(skb); | ||
| 145 | } | 139 | } |
| 146 | #else | 140 | #else |
| 147 | static inline void unix_get_peersec_dgram(struct sk_buff *skb) | 141 | static inline void unix_get_secdata(struct scm_cookie *scm, struct sk_buff *skb) |
| 148 | { } | 142 | { } |
| 149 | 143 | ||
| 150 | static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) | 144 | static inline void unix_set_secdata(struct scm_cookie *scm, struct sk_buff *skb) |
| @@ -1322,8 +1316,7 @@ static int unix_dgram_sendmsg(struct kiocb *kiocb, struct socket *sock, | |||
| 1322 | memcpy(UNIXCREDS(skb), &siocb->scm->creds, sizeof(struct ucred)); | 1316 | memcpy(UNIXCREDS(skb), &siocb->scm->creds, sizeof(struct ucred)); |
| 1323 | if (siocb->scm->fp) | 1317 | if (siocb->scm->fp) |
| 1324 | unix_attach_fds(siocb->scm, skb); | 1318 | unix_attach_fds(siocb->scm, skb); |
| 1325 | 1319 | unix_get_secdata(siocb->scm, skb); | |
| 1326 | unix_get_peersec_dgram(skb); | ||
| 1327 | 1320 | ||
| 1328 | skb->h.raw = skb->data; | 1321 | skb->h.raw = skb->data; |
| 1329 | err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len); | 1322 | err = memcpy_fromiovec(skb_put(skb,len), msg->msg_iov, len); |
