diff options
author | Alexander Bluhm <bluhm@cvs.openbsd.org> | 2012-07-07 18:48:20 +0000 |
---|---|---|
committer | Alexander Bluhm <bluhm@cvs.openbsd.org> | 2012-07-07 18:48:20 +0000 |
commit | cc164332ba1d761cadb5a4a0d65b0f584151835a (patch) | |
tree | 0533ba339e1fac9a85ee6e9d23d07b8479e821b8 /distrib/sets/lists/base | |
parent | e270a01adaae8383487dc64f0f1509d5eca10c39 (diff) |
Fix two races in socket splicing. When somove() gets called from
sosplice() to move the data already there, it might sleep in
m_copym().
Another process must not unsplice during that sleep, so also lock
the receive buffer when sosplice is called with fd -1.
The same sleep can allow network interrupts to modify the socket
buffer. So use sbsync() to write back modifications within the
loop instead of fixing the socket buffer after the loop.
OK claudio@
Diffstat (limited to 'distrib/sets/lists/base')
0 files changed, 0 insertions, 0 deletions