On 5/19/22 2:49 PM, Jens Axboe wrote: > On 5/19/22 2:05 PM, Jason A. Donenfeld wrote: >> Hi Jens, >> >> On Thu, May 19, 2022 at 01:31:31PM -0600, Jens Axboe wrote: >>> Hi, >>> >>> We recently had a failure on a kernel upgrade because splice no longer >>> works on random/urandom. This is due to: >>> >>> 6e2c7421f02 ("fs: don't allow splice read/write without explicit ops") >> >> Thanks for this. I'd noticed this a few months ago and assumed it has >> just always been that way, and hadn't gotten to looking at what was up. >> >> I'll take a look at these patches in detail when I'm home in a few >> hours, but one thing maybe you can answer more easily than my digging >> is: > > Sounds good, thanks! > >> There's a lot of attention in random.c devoted to not leaving any output >> around on the stack or in stray buffers. The explicit use of >> copy_to_user() makes it clear that the output isn't being copied >> anywhere other than what's the user's responsibility to cleanup. I'm >> wondering if the switch to copy_to_iter() introduces any buffering or >> gotchas that you might be aware of. > > No, it's just a wrapper around copying to the user memory pointed to by > the iov_iter. No extra buffering or anything like that. So I think it > should be fine in that respect, and it actually cleans up the code a bit > imho since the copy_to_iter() since the return value of "bytes copied" > is easier to work with than the "bytes not copied". > >> Also you may need to rebase this on the random.git tree at >> https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git > > OK, I will rebase it on that branch, not a problem. Rebased patches attached, you can also find them here: https://git.kernel.dk/cgit/linux-block/log/?h=random-splice Did some basic sanity checking (and with splice too), and seems fine rebased as well. -- Jens Axboe