aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ip_sockglue.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/ip_sockglue.c')
-rw-r--r--net/ipv4/ip_sockglue.c14
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)
113static void ip_cmsg_recv_security(struct msghdr *msg, struct sk_buff *skb) 112static 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
252void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, 256void 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
282void ip_local_error(struct sock *sk, int err, u32 daddr, u16 port, u32 info) 286void 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;