On Fri, Aug 21, 2020 at 5:38 AM Joerg Roedel joro@8bytes.org wrote:
From: Joerg Roedel jroedel@suse.de
The __apply_to_page_range() function is also used to change and/or allocate page-table pages in the vmalloc area of the address space. Make sure these changes get synchronized to other page-tables in the system by calling arch_sync_kernel_mappings() when necessary.
I get the strong feeling that these functions should be using a "struct apply_details *" or something like that (the way the zap_page_range() code has that "zap_details" thing).
Because adding more and more arguments gets pretty painful after a while. But maybe the compiler inlining it all makes it a non-issue.
It also strikes me that I think the only architecture that uses the whole arch_sync_kernel_mappings() thing is now just x86-32.
[ Well, x86-64 still has it, but that's because we undid the 64-bit removal, but it's on the verge of going away and x86-64 shouldn't actually _need_ it any more ]
So all of this seems to be purely for 32-bit x86. Which kind of makes this all fail the smell test.
But the patch does seem to be the minimal fix for a real issue - I'm just pointing out ugly details, not actual problems with the patch.
IOW, a somewhat reluctant Ack, hoping that this will be cleaned up some day. Possibly/hopefully because arch_sync_kernel_mappings() just goes away entirely.
Linus