diff options
Diffstat (limited to 'net/ipv4/af_inet.c')
| -rw-r--r-- | net/ipv4/af_inet.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index dd919d84285f..f440a9f54924 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
| @@ -264,7 +264,6 @@ static inline int inet_netns_ok(struct net *net, int protocol) | |||
| 264 | static int inet_create(struct net *net, struct socket *sock, int protocol) | 264 | static int inet_create(struct net *net, struct socket *sock, int protocol) |
| 265 | { | 265 | { |
| 266 | struct sock *sk; | 266 | struct sock *sk; |
| 267 | struct list_head *p; | ||
| 268 | struct inet_protosw *answer; | 267 | struct inet_protosw *answer; |
| 269 | struct inet_sock *inet; | 268 | struct inet_sock *inet; |
| 270 | struct proto *answer_prot; | 269 | struct proto *answer_prot; |
| @@ -281,13 +280,12 @@ static int inet_create(struct net *net, struct socket *sock, int protocol) | |||
| 281 | sock->state = SS_UNCONNECTED; | 280 | sock->state = SS_UNCONNECTED; |
| 282 | 281 | ||
| 283 | /* Look for the requested type/protocol pair. */ | 282 | /* Look for the requested type/protocol pair. */ |
| 284 | answer = NULL; | ||
| 285 | lookup_protocol: | 283 | lookup_protocol: |
| 286 | err = -ESOCKTNOSUPPORT; | 284 | err = -ESOCKTNOSUPPORT; |
| 287 | rcu_read_lock(); | 285 | rcu_read_lock(); |
| 288 | list_for_each_rcu(p, &inetsw[sock->type]) { | 286 | list_for_each_entry_rcu(answer, &inetsw[sock->type], list) { |
| 289 | answer = list_entry(p, struct inet_protosw, list); | ||
| 290 | 287 | ||
| 288 | err = 0; | ||
| 291 | /* Check the non-wild match. */ | 289 | /* Check the non-wild match. */ |
| 292 | if (protocol == answer->protocol) { | 290 | if (protocol == answer->protocol) { |
| 293 | if (protocol != IPPROTO_IP) | 291 | if (protocol != IPPROTO_IP) |
| @@ -302,10 +300,9 @@ lookup_protocol: | |||
| 302 | break; | 300 | break; |
| 303 | } | 301 | } |
| 304 | err = -EPROTONOSUPPORT; | 302 | err = -EPROTONOSUPPORT; |
| 305 | answer = NULL; | ||
| 306 | } | 303 | } |
| 307 | 304 | ||
| 308 | if (unlikely(answer == NULL)) { | 305 | if (unlikely(err)) { |
| 309 | if (try_loading_module < 2) { | 306 | if (try_loading_module < 2) { |
| 310 | rcu_read_unlock(); | 307 | rcu_read_unlock(); |
| 311 | /* | 308 | /* |
