David Howells <dhowells@xxxxxxxxxx> wrote: > I've managed to reproduce it finally. Instrumenting the pipe_lock/unlock > functions, splice_to_socket() and pipe_release() seems to show that > pipe_release() is being called whilst splice_to_socket() is still running. That's actually a bit of a red herring. pipe_release() is so-called because it's called as the release file op for an end of the pipe. It doesn't automatically free the pipe_inode_info struct - there's refcounting on that. So the problem is that udp_sendmsg() didn't return; pipe_release() hanging on the pipe_lock() is merely a noisy symptom thereof. David