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: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d34ac51b76
commit
1e2e01172f
|
@ -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);
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
__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
|
||||||
|
|
Loading…
Reference in New Issue