HomeFreeBSD

When writing trailers in sendfile(2), don't call kern_writev()
rS178616Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

When writing trailers in sendfile(2), don't call kern_writev()
while holding the socket buffer lock. These leads to an
immediate panic due to recursing the socket buffer lock. This
bug was introduced in uipc_syscalls.c:1.240, but masked by
another bug until that was fixed in uipc_syscalls.c:1.269.

Note that the current fix isn't perfect, but better than
panicking: normally we guarantee that simultaneous invocations
of a system call to write on a stream socket won't be
interlaced, which is ensured by use of the socket buffer sleep
lock. This is guaranteed for the sendfile headers, but not
trailers. In practice, this is likely not a problem, but
should be fixed.

MFC after: 3 days
Pointy hat to: andre (1.240), cperciva (1.269)

Details

Provenance
rwatsonAuthored on
Parents
rS178615: Merge in_pcb.c:1.203, in6_pcb.c:1.88 from HEAD to RELENG_7:
Branches
Unknown
Tags
Unknown

Event Timeline