diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/sock.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 4f4708a6ff8f..6046fc69428b 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -931,21 +931,16 @@ struct sock *sk_alloc(struct net *net, int family, gfp_t priority, | |||
931 | { | 931 | { |
932 | struct sock *sk; | 932 | struct sock *sk; |
933 | 933 | ||
934 | if (zero_it) | 934 | sk = sk_prot_alloc(prot, priority | __GFP_ZERO, family); |
935 | priority |= __GFP_ZERO; | ||
936 | |||
937 | sk = sk_prot_alloc(prot, priority, family); | ||
938 | if (sk) { | 935 | if (sk) { |
939 | if (zero_it) { | 936 | sk->sk_family = family; |
940 | sk->sk_family = family; | 937 | /* |
941 | /* | 938 | * See comment in struct sock definition to understand |
942 | * See comment in struct sock definition to understand | 939 | * why we need sk_prot_creator -acme |
943 | * why we need sk_prot_creator -acme | 940 | */ |
944 | */ | 941 | sk->sk_prot = sk->sk_prot_creator = prot; |
945 | sk->sk_prot = sk->sk_prot_creator = prot; | 942 | sock_lock_init(sk); |
946 | sock_lock_init(sk); | 943 | sk->sk_net = get_net(net); |
947 | sk->sk_net = get_net(net); | ||
948 | } | ||
949 | } | 944 | } |
950 | 945 | ||
951 | return sk; | 946 | return sk; |