aboutsummaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorLawrence Stewart <lstewart@FreeBSD.org>2009-07-13 11:59:38 +0000
committerLawrence Stewart <lstewart@FreeBSD.org>2009-07-13 11:59:38 +0000
commit91a5ebde451c83cebd9dbc80d2acd44d8a0b30f3 (patch)
treee83d9042b5936e6b6840720eb706159296313759 /lib/libc
parent237fbe0a1c4d0d97f2041006884e42d4d704b906 (diff)
downloadsrc-91a5ebde451c83cebd9dbc80d2acd44d8a0b30f3.tar.gz
src-91a5ebde451c83cebd9dbc80d2acd44d8a0b30f3.zip
Fix a race in the manipulation of the V_tcp_sack_globalholes global variable,
which is currently not protected by any type of lock. When triggered, the bug would sometimes cause a panic when the TCP activity to an affected machine eventually slowed during a lull. The panic only occurs if INVARIANTS is compiled into the kernel, and has laid dormant for some time as a result of INVARIANTS being off by default except in FreeBSD-CURRENT. Switch to atomic operations in the locations where the variable is changed. Reads have not been updated to be protected by atomics, so there is a possibility of accounting errors in any given calculation where the variable is read. This is considered unlikely to occur in the wild, and will not cause serious harm on rare occasions where it does. Thanks to Robert Watson for debugging help. Reported by: Kamigishi Rei <spambox at haruhiism dot net> Tested by: Kamigishi Rei <spambox at haruhiism dot net> Reviewed by: silby Approved by: re (rwatson), kensmith (mentor temporarily unavailable)
Notes
Notes: svn path=/head/; revision=195655
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions