diff options
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r-- | net/ipv6/af_inet6.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 3d828bc4b1cf..60461ad7fa6f 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -83,7 +83,6 @@ static int inet6_create(struct net *net, struct socket *sock, int protocol) | |||
83 | struct inet_sock *inet; | 83 | struct inet_sock *inet; |
84 | struct ipv6_pinfo *np; | 84 | struct ipv6_pinfo *np; |
85 | struct sock *sk; | 85 | struct sock *sk; |
86 | struct list_head *p; | ||
87 | struct inet_protosw *answer; | 86 | struct inet_protosw *answer; |
88 | struct proto *answer_prot; | 87 | struct proto *answer_prot; |
89 | unsigned char answer_flags; | 88 | unsigned char answer_flags; |
@@ -97,13 +96,12 @@ static int inet6_create(struct net *net, struct socket *sock, int protocol) | |||
97 | build_ehash_secret(); | 96 | build_ehash_secret(); |
98 | 97 | ||
99 | /* Look for the requested type/protocol pair. */ | 98 | /* Look for the requested type/protocol pair. */ |
100 | answer = NULL; | ||
101 | lookup_protocol: | 99 | lookup_protocol: |
102 | err = -ESOCKTNOSUPPORT; | 100 | err = -ESOCKTNOSUPPORT; |
103 | rcu_read_lock(); | 101 | rcu_read_lock(); |
104 | list_for_each_rcu(p, &inetsw6[sock->type]) { | 102 | list_for_each_entry_rcu(answer, &inetsw6[sock->type], list) { |
105 | answer = list_entry(p, struct inet_protosw, list); | ||
106 | 103 | ||
104 | err = 0; | ||
107 | /* Check the non-wild match. */ | 105 | /* Check the non-wild match. */ |
108 | if (protocol == answer->protocol) { | 106 | if (protocol == answer->protocol) { |
109 | if (protocol != IPPROTO_IP) | 107 | if (protocol != IPPROTO_IP) |
@@ -118,10 +116,9 @@ lookup_protocol: | |||
118 | break; | 116 | break; |
119 | } | 117 | } |
120 | err = -EPROTONOSUPPORT; | 118 | err = -EPROTONOSUPPORT; |
121 | answer = NULL; | ||
122 | } | 119 | } |
123 | 120 | ||
124 | if (!answer) { | 121 | if (err) { |
125 | if (try_loading_module < 2) { | 122 | if (try_loading_module < 2) { |
126 | rcu_read_unlock(); | 123 | rcu_read_unlock(); |
127 | /* | 124 | /* |