[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8e6c98d4-03e9-3eb5-3d4e-b9a9faeb677a@kernel.dk>
Date: Thu, 19 May 2022 15:02:28 -0600
From: Jens Axboe <axboe@...nel.dk>
To: "Jason A. Donenfeld" <Jason@...c4.com>
Cc: tytso@....edu, hch@....de, linux-kernel@...r.kernel.org
Subject: Re: [PATCHSET 0/2] Fix splice from random/urandom
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
View attachment "0002-random-wire-up-fops-splice_read_iter.patch" of type "text/x-patch" (1128 bytes)
View attachment "0001-random-convert-to-using-fops-read_iter.patch" of type "text/x-patch" (4254 bytes)
Powered by blists - more mailing lists