diff options
Diffstat (limited to 'net/core/sock.c')
-rw-r--r-- | net/core/sock.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 4ed7b1d12f5e..2de9dc295956 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1204,7 +1204,14 @@ void sk_release_kernel(struct sock *sk) | |||
1204 | } | 1204 | } |
1205 | EXPORT_SYMBOL(sk_release_kernel); | 1205 | EXPORT_SYMBOL(sk_release_kernel); |
1206 | 1206 | ||
1207 | struct sock *sk_clone(const struct sock *sk, const gfp_t priority) | 1207 | /** |
1208 | * sk_clone_lock - clone a socket, and lock its clone | ||
1209 | * @sk: the socket to clone | ||
1210 | * @priority: for allocation (%GFP_KERNEL, %GFP_ATOMIC, etc) | ||
1211 | * | ||
1212 | * Caller must unlock socket even in error path (bh_unlock_sock(newsk)) | ||
1213 | */ | ||
1214 | struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) | ||
1208 | { | 1215 | { |
1209 | struct sock *newsk; | 1216 | struct sock *newsk; |
1210 | 1217 | ||
@@ -1297,7 +1304,7 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority) | |||
1297 | out: | 1304 | out: |
1298 | return newsk; | 1305 | return newsk; |
1299 | } | 1306 | } |
1300 | EXPORT_SYMBOL_GPL(sk_clone); | 1307 | EXPORT_SYMBOL_GPL(sk_clone_lock); |
1301 | 1308 | ||
1302 | void sk_setup_caps(struct sock *sk, struct dst_entry *dst) | 1309 | void sk_setup_caps(struct sock *sk, struct dst_entry *dst) |
1303 | { | 1310 | { |