mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
tcp: move reqsk_alloc() to inet_connection_sock.c
reqsk_alloc() has a single caller, no need to expose it in include/net/request_sock.h. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
adbe695a97
commit
6971d21672
@ -128,39 +128,6 @@ static inline struct sock *skb_steal_sock(struct sk_buff *skb,
|
|||||||
return sk;
|
return sk;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct request_sock *
|
|
||||||
reqsk_alloc_noprof(const struct request_sock_ops *ops, struct sock *sk_listener,
|
|
||||||
bool attach_listener)
|
|
||||||
{
|
|
||||||
struct request_sock *req;
|
|
||||||
|
|
||||||
req = kmem_cache_alloc_noprof(ops->slab, GFP_ATOMIC | __GFP_NOWARN);
|
|
||||||
if (!req)
|
|
||||||
return NULL;
|
|
||||||
req->rsk_listener = NULL;
|
|
||||||
if (attach_listener) {
|
|
||||||
if (unlikely(!refcount_inc_not_zero(&sk_listener->sk_refcnt))) {
|
|
||||||
kmem_cache_free(ops->slab, req);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
req->rsk_listener = sk_listener;
|
|
||||||
}
|
|
||||||
req->rsk_ops = ops;
|
|
||||||
req_to_sk(req)->sk_prot = sk_listener->sk_prot;
|
|
||||||
sk_node_init(&req_to_sk(req)->sk_node);
|
|
||||||
sk_tx_queue_clear(req_to_sk(req));
|
|
||||||
req->saved_syn = NULL;
|
|
||||||
req->syncookie = 0;
|
|
||||||
req->timeout = 0;
|
|
||||||
req->num_timeout = 0;
|
|
||||||
req->num_retrans = 0;
|
|
||||||
req->sk = NULL;
|
|
||||||
refcount_set(&req->rsk_refcnt, 0);
|
|
||||||
|
|
||||||
return req;
|
|
||||||
}
|
|
||||||
#define reqsk_alloc(...) alloc_hooks(reqsk_alloc_noprof(__VA_ARGS__))
|
|
||||||
|
|
||||||
static inline void __reqsk_free(struct request_sock *req)
|
static inline void __reqsk_free(struct request_sock *req)
|
||||||
{
|
{
|
||||||
req->rsk_ops->destructor(req);
|
req->rsk_ops->destructor(req);
|
||||||
|
@ -911,6 +911,39 @@ int inet_rtx_syn_ack(const struct sock *parent, struct request_sock *req)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(inet_rtx_syn_ack);
|
EXPORT_SYMBOL(inet_rtx_syn_ack);
|
||||||
|
|
||||||
|
static struct request_sock *
|
||||||
|
reqsk_alloc_noprof(const struct request_sock_ops *ops, struct sock *sk_listener,
|
||||||
|
bool attach_listener)
|
||||||
|
{
|
||||||
|
struct request_sock *req;
|
||||||
|
|
||||||
|
req = kmem_cache_alloc_noprof(ops->slab, GFP_ATOMIC | __GFP_NOWARN);
|
||||||
|
if (!req)
|
||||||
|
return NULL;
|
||||||
|
req->rsk_listener = NULL;
|
||||||
|
if (attach_listener) {
|
||||||
|
if (unlikely(!refcount_inc_not_zero(&sk_listener->sk_refcnt))) {
|
||||||
|
kmem_cache_free(ops->slab, req);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
req->rsk_listener = sk_listener;
|
||||||
|
}
|
||||||
|
req->rsk_ops = ops;
|
||||||
|
req_to_sk(req)->sk_prot = sk_listener->sk_prot;
|
||||||
|
sk_node_init(&req_to_sk(req)->sk_node);
|
||||||
|
sk_tx_queue_clear(req_to_sk(req));
|
||||||
|
req->saved_syn = NULL;
|
||||||
|
req->syncookie = 0;
|
||||||
|
req->timeout = 0;
|
||||||
|
req->num_timeout = 0;
|
||||||
|
req->num_retrans = 0;
|
||||||
|
req->sk = NULL;
|
||||||
|
refcount_set(&req->rsk_refcnt, 0);
|
||||||
|
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
#define reqsk_alloc(...) alloc_hooks(reqsk_alloc_noprof(__VA_ARGS__))
|
||||||
|
|
||||||
struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops,
|
struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops,
|
||||||
struct sock *sk_listener,
|
struct sock *sk_listener,
|
||||||
bool attach_listener)
|
bool attach_listener)
|
||||||
|
Loading…
Reference in New Issue
Block a user