On Wed, Jun 12, 2019 at 04:02:33PM +0200, Rémi Bernon wrote:
This parameter was misinterpreted as an alignment parameter for the lower bits of the allocated memory region, although it is a constraint on the higher bits.
Add a new internal ntdll virtual_alloc_aligned function that has a separate alignment parameter which is now used instead of the zero_bits parameter.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com
dlls/ntdll/directory.c | 4 +-- dlls/ntdll/heap.c | 5 ++-- dlls/ntdll/ntdll_misc.h | 2 ++ dlls/ntdll/signal_arm.c | 12 ++++----- dlls/ntdll/signal_arm64.c | 16 ++++++------ dlls/ntdll/signal_i386.c | 16 ++++++------ dlls/ntdll/signal_powerpc.c | 12 ++++----- dlls/ntdll/signal_x86_64.c | 16 ++++++------ dlls/ntdll/tests/virtual.c | 4 +-- dlls/ntdll/thread.c | 3 +-- dlls/ntdll/virtual.c | 49 ++++++++++++++++++++++++++----------- 11 files changed, 79 insertions(+), 60 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index 78973a8cda4..7a6e461ffaf 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1713,7 +1716,7 @@ NTSTATUS virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG zero_bits, S get_vprot_flags( protect, &vprot, sec_flags & SEC_IMAGE ); vprot |= sec_flags; if (!(sec_flags & SEC_RESERVE)) vprot |= VPROT_COMMITTED;
- res = map_view( &view, *addr_ptr, size, mask, FALSE, vprot );
- res = map_view( &view, *addr_ptr, size, mask, FALSE, vprot, zero_bits );
I think we should pass 0 here until we change the behaviour the rest of this function. I've sent in a new version that does that.
Could you now send in a patch that adds a zero_bits parameter to map_image() and removes mask? At some point we'll want to fix the parameter name in get_mask() too.
Huw.