diff --git a/README.md b/README.md index 79888e9a..7057cfa8 100644 --- a/README.md +++ b/README.md @@ -38,13 +38,14 @@ Wine. All those differences are also documented on the Included bug fixes and improvements =================================== -**Bugfixes and features included in the next upcoming release [13]:** +**Bugfixes and features included in the next upcoming release [14]:** * Add semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098)) * Add semi-stub for GetFileVersionInfoSizeExA/W ([Wine Bug #38090](https://bugs.winehq.org/show_bug.cgi?id=38090)) * Add stub for ntoskrnl.ExAcquireResourceExclusiveLite * Add stub for ntoskrnl.ExDeleteResourceLite * Add stub for ntoskrnl.ExReleaseResourceForThread +* Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages * Avoid race-conditions in NtReadFile() operations with write watches. * Avoid race-conditions with write watches in WS2_async_accept. * Basic handling of write watches triggered while we're on the signal stack. diff --git a/debian/changelog b/debian/changelog index 1a8d2b60..ee80e6f2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,7 @@ wine-staging (1.7.37) UNRELEASED; urgency=low * Added patch to implement semi-stub for GetFileVersionInfoSizeExA/W. * Added patch to implement semi-stub for GetFileVersionInfoExA/W. * Added patch to ignore unsupported alpha channels in TIFF decoder. + * Added patch to add stub for ntoskrnl.Mm{Map,Unmap}LockedPages. * Removed patches for UTF7 support (accepted upstream). * Removed patches for SIO_ADDRESS_LIST_CHANGE ioctl (accepted upstream). * Removed patch for IApplicationAssociationRegistration::QueryCurrentDefault (accepted upstream). diff --git a/patches/ntoskrnl-Stubs/0014-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch b/patches/ntoskrnl-Stubs/0014-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch new file mode 100644 index 00000000..afc5cb8b --- /dev/null +++ b/patches/ntoskrnl-Stubs/0014-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch @@ -0,0 +1,74 @@ +From 2312e4f90d7f17f6e631ee7f1839d30ffa70241e Mon Sep 17 00:00:00 2001 +From: Christian Costa <titan.costa@gmail.com> +Date: Sun, 1 Feb 2015 12:53:09 +0100 +Subject: ntoskrnl.exe: Implement MmMapLockedPages and MmUnmapLockedPages. + +--- + dlls/ntoskrnl.exe/ntoskrnl.c | 21 +++++++++++++++++++++ + dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 4 ++-- + 2 files changed, 23 insertions(+), 2 deletions(-) + +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c +index 715f302..10957e8 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.c ++++ b/dlls/ntoskrnl.exe/ntoskrnl.c +@@ -1673,6 +1673,16 @@ VOID WINAPI MmLockPagableSectionByHandle(PVOID ImageSectionHandle) + FIXME("stub %p\n", ImageSectionHandle); + } + ++ /*********************************************************************** ++ * MmMapLockedPages (NTOSKRNL.EXE.@) ++ */ ++PVOID WINAPI MmMapLockedPages(PMDL MemoryDescriptorList, KPROCESSOR_MODE AccessMode) ++{ ++ TRACE("%p %d\n", MemoryDescriptorList, AccessMode); ++ return MemoryDescriptorList->MappedSystemVa; ++} ++ ++ + /*********************************************************************** + * MmMapLockedPagesSpecifyCache (NTOSKRNL.EXE.@) + */ +@@ -1737,6 +1747,17 @@ VOID WINAPI MmUnmapIoSpace( PVOID BaseAddress, SIZE_T NumberOfBytes ) + FIXME( "stub: %p, %lu\n", BaseAddress, NumberOfBytes ); + } + ++ ++/*********************************************************************** ++ * MmUnmapLockedPages (NTOSKRNL.EXE.@) ++ */ ++void WINAPI MmUnmapLockedPages(PVOID BaseAddress, PMDLX MemoryDescriptorList) ++{ ++ TRACE("%p %p\n", BaseAddress, MemoryDescriptorList); ++ /* Nothing to do */ ++} ++ ++ + /*********************************************************************** + * ObfReferenceObject (NTOSKRNL.EXE.@) + */ +diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +index 238c953..4a112ef 100644 +--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec ++++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +@@ -689,7 +689,7 @@ + @ stub MmLockPagableImageSection + @ stdcall MmLockPagableSectionByHandle(ptr) + @ stdcall MmMapIoSpace(long long long long) +-@ stub MmMapLockedPages ++@ stdcall MmMapLockedPages(ptr long) + @ stdcall MmMapLockedPagesSpecifyCache(ptr long long ptr long long) + @ stub MmMapLockedPagesWithReservedMapping + @ stub MmMapMemoryDumpMdl +@@ -719,7 +719,7 @@ + @ stdcall MmUnlockPagableImageSection(ptr) + @ stdcall MmUnlockPages(ptr) + @ stdcall MmUnmapIoSpace(ptr long) +-@ stub MmUnmapLockedPages ++@ stdcall MmUnmapLockedPages(ptr ptr) + @ stub MmUnmapReservedMapping + @ stub MmUnmapVideoDisplay + @ stub MmUnmapViewInSessionSpace +-- +2.3.0 + diff --git a/patches/ntoskrnl-Stubs/definition b/patches/ntoskrnl-Stubs/definition index 94f9c5b4..22df9f05 100644 --- a/patches/ntoskrnl-Stubs/definition +++ b/patches/ntoskrnl-Stubs/definition @@ -7,3 +7,4 @@ Fixes: Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function. Fixes: Add stub for ntoskrnl.ExAcquireResourceExclusiveLite Fixes: Add stub for ntoskrnl.ExReleaseResourceForThread Fixes: Add stub for ntoskrnl.ExDeleteResourceLite +Fixes: Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index c34a4882..8c7b09ad 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -2374,6 +2374,7 @@ if test "$enable_ntoskrnl_Stubs" -eq 1; then patch_apply ntoskrnl-Stubs/0011-ntoskrnl.exe-Add-stub-for-ExAcquireResourceExclusive.patch patch_apply ntoskrnl-Stubs/0012-ntoskrnl.exe-Add-stub-for-ExReleaseResourceForThread.patch patch_apply ntoskrnl-Stubs/0013-ntoskrnl.exe-Add-stub-for-ExDeleteResourceLite.patch + patch_apply ntoskrnl-Stubs/0014-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch ( echo '+ { "Sebastian Lackner", "include: Remove several duplicate definitions from ntdef.h.", 1 },'; echo '+ { "Austin English", "ntoskrnl.exe: add KeWaitForMultipleObjects stub.", 1 },'; @@ -2388,6 +2389,7 @@ if test "$enable_ntoskrnl_Stubs" -eq 1; then echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExAcquireResourceExclusiveLite.", 1 },'; echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExReleaseResourceForThreadLite.", 1 },'; echo '+ { "Christian Costa", "ntoskrnl.exe: Add stub for ExDeleteResourceLite.", 1 },'; + echo '+ { "Christian Costa", "ntoskrnl.exe: Implement MmMapLockedPages and MmUnmapLockedPages.", 1 },'; ) >> "$patchlist" fi