| .. | .. |
|---|
| 107 | 107 | return (struct ipv6_pinfo *)(((u8 *)sk) + offset); |
|---|
| 108 | 108 | } |
|---|
| 109 | 109 | |
|---|
| 110 | +void inet6_sock_destruct(struct sock *sk) |
|---|
| 111 | +{ |
|---|
| 112 | + inet6_cleanup_sock(sk); |
|---|
| 113 | + inet_sock_destruct(sk); |
|---|
| 114 | +} |
|---|
| 115 | +EXPORT_SYMBOL_GPL(inet6_sock_destruct); |
|---|
| 116 | + |
|---|
| 110 | 117 | static int inet6_create(struct net *net, struct socket *sock, int protocol, |
|---|
| 111 | 118 | int kern) |
|---|
| 112 | 119 | { |
|---|
| .. | .. |
|---|
| 199 | 206 | inet->hdrincl = 1; |
|---|
| 200 | 207 | } |
|---|
| 201 | 208 | |
|---|
| 202 | | - sk->sk_destruct = inet_sock_destruct; |
|---|
| 209 | + sk->sk_destruct = inet6_sock_destruct; |
|---|
| 203 | 210 | sk->sk_family = PF_INET6; |
|---|
| 204 | 211 | sk->sk_protocol = protocol; |
|---|
| 205 | 212 | |
|---|
| .. | .. |
|---|
| 505 | 512 | } |
|---|
| 506 | 513 | EXPORT_SYMBOL_GPL(inet6_destroy_sock); |
|---|
| 507 | 514 | |
|---|
| 515 | +void inet6_cleanup_sock(struct sock *sk) |
|---|
| 516 | +{ |
|---|
| 517 | + inet6_destroy_sock(sk); |
|---|
| 518 | +} |
|---|
| 519 | +EXPORT_SYMBOL_GPL(inet6_cleanup_sock); |
|---|
| 520 | + |
|---|
| 508 | 521 | /* |
|---|
| 509 | 522 | * This does both peername and sockname. |
|---|
| 510 | 523 | */ |
|---|