Commit 1e2e0117 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

inet: add rsk_refcnt/ireq_refcnt to request socks

When request socks will be in ehash, they'll need to be refcounted.

This patch adds rsk_refcnt/ireq_refcnt macros, and adds
reqsk_put() function, but nothing yet use them.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d34ac51b
...@@ -81,6 +81,7 @@ struct inet_request_sock { ...@@ -81,6 +81,7 @@ struct inet_request_sock {
#define ir_cookie req.__req_common.skc_cookie #define ir_cookie req.__req_common.skc_cookie
#define ireq_net req.__req_common.skc_net #define ireq_net req.__req_common.skc_net
#define ireq_state req.__req_common.skc_state #define ireq_state req.__req_common.skc_state
#define ireq_refcnt req.__req_common.skc_refcnt
kmemcheck_bitfield_begin(flags); kmemcheck_bitfield_begin(flags);
u16 snd_wscale : 4, u16 snd_wscale : 4,
......
...@@ -49,6 +49,8 @@ int inet_rtx_syn_ack(struct sock *parent, struct request_sock *req); ...@@ -49,6 +49,8 @@ int inet_rtx_syn_ack(struct sock *parent, struct request_sock *req);
*/ */
struct request_sock { struct request_sock {
struct sock_common __req_common; struct sock_common __req_common;
#define rsk_refcnt __req_common.skc_refcnt
struct request_sock *dl_next; struct request_sock *dl_next;
u16 mss; u16 mss;
u8 num_retrans; /* number of retransmits */ u8 num_retrans; /* number of retransmits */
...@@ -86,6 +88,12 @@ static inline void reqsk_free(struct request_sock *req) ...@@ -86,6 +88,12 @@ static inline void reqsk_free(struct request_sock *req)
__reqsk_free(req); __reqsk_free(req);
} }
static inline void reqsk_put(struct request_sock *req)
{
if (atomic_dec_and_test(&req->rsk_refcnt))
reqsk_free(req);
}
extern int sysctl_max_syn_backlog; extern int sysctl_max_syn_backlog;
/** struct listen_sock - listen state /** struct listen_sock - listen state
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment