On Wed, Mar 11, 2020 at 02:01:07PM +0100, Pavel Machek wrote:
Hi!
Currently, the mixed mode runtime service wrappers require that all by-ref arguments that live in the vmalloc space have a size that is a power of 2, and are aligned to that same value. While this is a sensible way to construct an object that is guaranteed not to cross a page boundary, it is overly strict when it comes to checking whether a given object violates this requirement, as we can simply take the physical address of the first and the last byte, and verify that they point into the same physical page.
Dunno. If start passing buffers that _sometime_ cross page boundaries, we'll get hard to debug failures. Maybe original code is better buecause it catches problems earlier?
Furthermore, all existing code should pass aligned, 2^n size buffers, so we should not need this in stable?
For some crazy reason you cut out the reason I applied this patch to the stable tree. From the changelog text: Fixes: f6697df36bdf0bf7 ("x86/efi: Prevent mixed mode boot corruption with CONFIG_VMAP_STACK=y")