diff options
Diffstat (limited to 'net/ipv4/ip_sockglue.c')
| -rw-r--r-- | net/ipv4/ip_sockglue.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index 12e0bf19f24a..4b132953bcc2 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c | |||
| @@ -17,7 +17,6 @@ | |||
| 17 | * Mike McLagan : Routing by source | 17 | * Mike McLagan : Routing by source |
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include <linux/config.h> | ||
| 21 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| 22 | #include <linux/types.h> | 21 | #include <linux/types.h> |
| 23 | #include <linux/mm.h> | 22 | #include <linux/mm.h> |
| @@ -113,14 +112,19 @@ static void ip_cmsg_recv_retopts(struct msghdr *msg, struct sk_buff *skb) | |||
| 113 | static void ip_cmsg_recv_security(struct msghdr *msg, struct sk_buff *skb) | 112 | static void ip_cmsg_recv_security(struct msghdr *msg, struct sk_buff *skb) |
| 114 | { | 113 | { |
| 115 | char *secdata; | 114 | char *secdata; |
| 116 | u32 seclen; | 115 | u32 seclen, secid; |
| 117 | int err; | 116 | int err; |
| 118 | 117 | ||
| 119 | err = security_socket_getpeersec_dgram(skb, &secdata, &seclen); | 118 | err = security_socket_getpeersec_dgram(NULL, skb, &secid); |
| 119 | if (err) | ||
| 120 | return; | ||
| 121 | |||
| 122 | err = security_secid_to_secctx(secid, &secdata, &seclen); | ||
| 120 | if (err) | 123 | if (err) |
| 121 | return; | 124 | return; |
| 122 | 125 | ||
| 123 | put_cmsg(msg, SOL_IP, SCM_SECURITY, seclen, secdata); | 126 | put_cmsg(msg, SOL_IP, SCM_SECURITY, seclen, secdata); |
| 127 | security_release_secctx(secdata, seclen); | ||
| 124 | } | 128 | } |
| 125 | 129 | ||
| 126 | 130 | ||
| @@ -250,7 +254,7 @@ int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct s | |||
| 250 | } | 254 | } |
| 251 | 255 | ||
| 252 | void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, | 256 | void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, |
| 253 | u16 port, u32 info, u8 *payload) | 257 | __be16 port, u32 info, u8 *payload) |
| 254 | { | 258 | { |
| 255 | struct inet_sock *inet = inet_sk(sk); | 259 | struct inet_sock *inet = inet_sk(sk); |
| 256 | struct sock_exterr_skb *serr; | 260 | struct sock_exterr_skb *serr; |
| @@ -279,7 +283,7 @@ void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, | |||
| 279 | kfree_skb(skb); | 283 | kfree_skb(skb); |
| 280 | } | 284 | } |
| 281 | 285 | ||
| 282 | void ip_local_error(struct sock *sk, int err, u32 daddr, u16 port, u32 info) | 286 | void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 port, u32 info) |
| 283 | { | 287 | { |
| 284 | struct inet_sock *inet = inet_sk(sk); | 288 | struct inet_sock *inet = inet_sk(sk); |
| 285 | struct sock_exterr_skb *serr; | 289 | struct sock_exterr_skb *serr; |
