On Sun, Dec 4, 2016 at 7:52 PM, Al Viro <v...@zeniv.linux.org.uk> wrote: > On Sun, Dec 04, 2016 at 09:42:14PM -0500, David Miller wrote: >> > I've run into that converting AF_UNIX to generic_file_splice_read(); >> > I can kludge around that ("freezable unless ->msg_iter is ITER_PIPE"), but >> > that only delays trouble. >> > >> > Note that the only other user of freezable_schedule_timeout() is >> > a very different story - it's a kernel thread, which *does* have a >> > guaranteed >> > locking environment. Making such assumptions in unix_stream_recvmsg(), >> > OTOH, is insane... >> >> We have to otherwise Android phones drain their batteries in 10 >> minutes. >> >> I'm not going to revert this and be responsible for that. >> >> So you have to find a way to make the freezable calls legitimate. > > Oh, well... As I said, I can kludge around that - call from > generic_file_splice_read() can be distinguished by looking at the > ->msg_iter->type; it still means unpleasantness for kernel_recvmsg() > users - in effect, it can only be called with locks held if you know that > the socket is not an AF_UNIX one. > > BTW, how do they deal with plain pipes?
I suppose this question is for Colin. ;)