diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-06-25 06:32:01 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-06-25 06:32:01 -0400 |
| commit | da7878d75b8520c9ae00d27dfbbce546a7bfdfbb (patch) | |
| tree | 547fd497a80818a60ac36831377d5df97868173c /net/ipv6/raw.c | |
| parent | 0e50a4c6ab94ffe7e5515b86b5df9e5abc8c6b13 (diff) | |
| parent | 543cf4cb3fe6f6cae3651ba918b9c56200b257d0 (diff) | |
Merge branch 'linus' into x86/pebs
Diffstat (limited to 'net/ipv6/raw.c')
| -rw-r--r-- | net/ipv6/raw.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 232e0dc45bf5..3aee12310d94 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c | |||
| @@ -813,7 +813,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
| 813 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 813 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
| 814 | opt->tot_len = sizeof(struct ipv6_txoptions); | 814 | opt->tot_len = sizeof(struct ipv6_txoptions); |
| 815 | 815 | ||
| 816 | err = datagram_send_ctl(msg, &fl, opt, &hlimit, &tclass); | 816 | err = datagram_send_ctl(sock_net(sk), msg, &fl, opt, &hlimit, &tclass); |
| 817 | if (err < 0) { | 817 | if (err < 0) { |
| 818 | fl6_sock_release(flowlabel); | 818 | fl6_sock_release(flowlabel); |
| 819 | return err; | 819 | return err; |
| @@ -1164,6 +1164,15 @@ static void rawv6_close(struct sock *sk, long timeout) | |||
| 1164 | sk_common_release(sk); | 1164 | sk_common_release(sk); |
| 1165 | } | 1165 | } |
| 1166 | 1166 | ||
| 1167 | static int raw6_destroy(struct sock *sk) | ||
| 1168 | { | ||
| 1169 | lock_sock(sk); | ||
| 1170 | ip6_flush_pending_frames(sk); | ||
| 1171 | release_sock(sk); | ||
| 1172 | |||
| 1173 | return inet6_destroy_sock(sk); | ||
| 1174 | } | ||
| 1175 | |||
| 1167 | static int rawv6_init_sk(struct sock *sk) | 1176 | static int rawv6_init_sk(struct sock *sk) |
| 1168 | { | 1177 | { |
| 1169 | struct raw6_sock *rp = raw6_sk(sk); | 1178 | struct raw6_sock *rp = raw6_sk(sk); |
| @@ -1187,11 +1196,11 @@ struct proto rawv6_prot = { | |||
| 1187 | .name = "RAWv6", | 1196 | .name = "RAWv6", |
| 1188 | .owner = THIS_MODULE, | 1197 | .owner = THIS_MODULE, |
| 1189 | .close = rawv6_close, | 1198 | .close = rawv6_close, |
| 1199 | .destroy = raw6_destroy, | ||
| 1190 | .connect = ip6_datagram_connect, | 1200 | .connect = ip6_datagram_connect, |
| 1191 | .disconnect = udp_disconnect, | 1201 | .disconnect = udp_disconnect, |
| 1192 | .ioctl = rawv6_ioctl, | 1202 | .ioctl = rawv6_ioctl, |
| 1193 | .init = rawv6_init_sk, | 1203 | .init = rawv6_init_sk, |
| 1194 | .destroy = inet6_destroy_sock, | ||
| 1195 | .setsockopt = rawv6_setsockopt, | 1204 | .setsockopt = rawv6_setsockopt, |
| 1196 | .getsockopt = rawv6_getsockopt, | 1205 | .getsockopt = rawv6_getsockopt, |
| 1197 | .sendmsg = rawv6_sendmsg, | 1206 | .sendmsg = rawv6_sendmsg, |
