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: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
#define ir_cookie req.__req_common.skc_cookie
#define ireq_net req.__req_common.skc_net
#define ireq_state req.__req_common.skc_state
+#define ireq_refcnt req.__req_common.skc_refcnt
kmemcheck_bitfield_begin(flags);
u16 snd_wscale : 4,
*/
struct request_sock {
struct sock_common __req_common;
+#define rsk_refcnt __req_common.skc_refcnt
+
struct request_sock *dl_next;
u16 mss;
u8 num_retrans; /* number of retransmits */
__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;
/** struct listen_sock - listen state