diff options
Diffstat (limited to 'net/ipv6/ipv6_sockglue.c')
-rw-r--r-- | net/ipv6/ipv6_sockglue.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 86e28a75267f..ea33b26512c2 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
@@ -7,8 +7,6 @@ | |||
7 | * | 7 | * |
8 | * Based on linux/net/ipv4/ip_sockglue.c | 8 | * Based on linux/net/ipv4/ip_sockglue.c |
9 | * | 9 | * |
10 | * $Id: ipv6_sockglue.c,v 1.41 2002/02/01 22:01:04 davem Exp $ | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
13 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
14 | * as published by the Free Software Foundation; either version | 12 | * as published by the Free Software Foundation; either version |
@@ -61,7 +59,7 @@ DEFINE_SNMP_STAT(struct ipstats_mib, ipv6_statistics) __read_mostly; | |||
61 | struct ip6_ra_chain *ip6_ra_chain; | 59 | struct ip6_ra_chain *ip6_ra_chain; |
62 | DEFINE_RWLOCK(ip6_ra_lock); | 60 | DEFINE_RWLOCK(ip6_ra_lock); |
63 | 61 | ||
64 | int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)) | 62 | int ip6_ra_control(struct sock *sk, int sel) |
65 | { | 63 | { |
66 | struct ip6_ra_chain *ra, *new_ra, **rap; | 64 | struct ip6_ra_chain *ra, *new_ra, **rap; |
67 | 65 | ||
@@ -83,8 +81,6 @@ int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)) | |||
83 | *rap = ra->next; | 81 | *rap = ra->next; |
84 | write_unlock_bh(&ip6_ra_lock); | 82 | write_unlock_bh(&ip6_ra_lock); |
85 | 83 | ||
86 | if (ra->destructor) | ||
87 | ra->destructor(sk); | ||
88 | sock_put(sk); | 84 | sock_put(sk); |
89 | kfree(ra); | 85 | kfree(ra); |
90 | return 0; | 86 | return 0; |
@@ -96,7 +92,6 @@ int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)) | |||
96 | } | 92 | } |
97 | new_ra->sk = sk; | 93 | new_ra->sk = sk; |
98 | new_ra->sel = sel; | 94 | new_ra->sel = sel; |
99 | new_ra->destructor = destructor; | ||
100 | new_ra->next = ra; | 95 | new_ra->next = ra; |
101 | *rap = new_ra; | 96 | *rap = new_ra; |
102 | sock_hold(sk); | 97 | sock_hold(sk); |
@@ -634,7 +629,7 @@ done: | |||
634 | case IPV6_ROUTER_ALERT: | 629 | case IPV6_ROUTER_ALERT: |
635 | if (optlen < sizeof(int)) | 630 | if (optlen < sizeof(int)) |
636 | goto e_inval; | 631 | goto e_inval; |
637 | retv = ip6_ra_control(sk, val, NULL); | 632 | retv = ip6_ra_control(sk, val); |
638 | break; | 633 | break; |
639 | case IPV6_MTU_DISCOVER: | 634 | case IPV6_MTU_DISCOVER: |
640 | if (optlen < sizeof(int)) | 635 | if (optlen < sizeof(int)) |
@@ -1043,7 +1038,7 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | |||
1043 | dst_release(dst); | 1038 | dst_release(dst); |
1044 | } | 1039 | } |
1045 | if (val < 0) | 1040 | if (val < 0) |
1046 | val = ipv6_devconf.hop_limit; | 1041 | val = sock_net(sk)->ipv6.devconf_all->hop_limit; |
1047 | break; | 1042 | break; |
1048 | } | 1043 | } |
1049 | 1044 | ||