Messages in this thread | | | Date | Wed, 22 Mar 2023 18:02:34 +0100 | Subject | Re: [PATCH v6 4/4] mm: vmalloc: convert vread() to vread_iter() | From | David Hildenbrand <> |
| |
On 22.03.23 15:55, Lorenzo Stoakes wrote: > Having previously laid the foundation for converting vread() to an iterator > function, pull the trigger and do so. > > This patch attempts to provide minimal refactoring and to reflect the > existing logic as best we can, for example we continue to zero portions of > memory not read, as before. > > Overall, there should be no functional difference other than a performance > improvement in /proc/kcore access to vmalloc regions. > > Now we have eliminated the need for a bounce buffer in read_kcore_iter(), > we dispense with it, and try to write to user memory optimistically but > with faults disabled via copy_page_to_iter_nofault(). We already have > preemption disabled by holding a spin lock. > > If this fails, we fault in and retry a single time. This is a conservative > approach intended to avoid spinning on vread_iter() if we repeatedly > encouter issues reading from it.
I have to ask again: Can you comment why that is ok? You might end up signaling -EFAULT to user space simply because swapping/page migration/whatever triggered at the wrong time.
That could break existing user space or which important part am I missing?
-- Thanks,
David / dhildenb
| |