diff options
author | Mithun Iyer <iyerm@google.com> | 2021-03-16 15:06:26 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-03-16 15:08:09 -0700 |
commit | 5eede4e7563e245a685d6529dffddbf9c3a53f50 (patch) | |
tree | e18e4bb3a03dd08a70e7176a24a58969edc27129 /pkg/buffer/pool.go | |
parent | 607a1e481c276c8ab0c3e194ed04b38bc07b71b6 (diff) |
Fix a race with synRcvdCount and accept
There is a race in handling new incoming connections on a listening
endpoint that causes the endpoint to reply to more incoming SYNs than
what is permitted by the listen backlog.
The race occurs when there is a successful passive connection handshake
and the synRcvdCount counter is decremented, followed by the endpoint
delivered to the accept queue. In the window of time between
synRcvdCount decrementing and the endpoint being enqueued for accept,
new incoming SYNs can be handled without honoring the listen backlog
value, as the backlog could be perceived not full.
Fixes #5637
PiperOrigin-RevId: 363279372
Diffstat (limited to 'pkg/buffer/pool.go')
0 files changed, 0 insertions, 0 deletions