From 48ffaa6b213912e435563d93dcd05b9c9320a8e8 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 22 Sep 2017 08:48:47 +0200 Subject: [PATCH] Rebase against 25a8773d21d0113dc5e4f9dee49d9d9dbeed347b. --- ...del-usercontext-l1-1-0-Add-dll-and-a.patch | 16 ++-- ...a2-tests-Add-tests-for-dxva2-decoder.patch | 14 ++-- ...-conditions-with-write-watches-in-Nt.patch | 74 +++++++++++++------ patches/patchinstall.sh | 4 +- ...e-conditions-of-async-WSARecv-operat.patch | 65 +++++++++++++++- 5 files changed, 131 insertions(+), 42 deletions(-) diff --git a/patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch b/patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch index 46728d19..bef8598e 100644 --- a/patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch +++ b/patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch @@ -1,4 +1,4 @@ -From 23e58d6cb2f258da259a1efce72fd2e1d58a530b Mon Sep 17 00:00:00 2001 +From 9b292e1bcfc18eecb70ac34fdd302d1274f68bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 17 Jan 2016 17:12:45 +0100 Subject: ext-ms-win-appmodel-usercontext-l1-1-0: Add dll and add stub for @@ -15,11 +15,11 @@ Subject: ext-ms-win-appmodel-usercontext-l1-1-0: Add dll and add stub for create mode 100644 dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c diff --git a/configure.ac b/configure.ac -index 1d1846dbb7..e9cf69d3fe 100644 +index cd6fe607f65..3e0f37d2753 100644 --- a/configure.ac +++ b/configure.ac -@@ -3045,6 +3045,7 @@ WINE_CONFIG_DLL(esent) - WINE_CONFIG_DLL(evr) +@@ -3126,6 +3126,7 @@ WINE_CONFIG_DLL(evr) + WINE_CONFIG_TEST(dlls/evr/tests) WINE_CONFIG_DLL(explorerframe,,[clean]) WINE_CONFIG_TEST(dlls/explorerframe/tests) +WINE_CONFIG_DLL(ext-ms-win-appmodel-usercontext-l1-1-0) @@ -28,7 +28,7 @@ index 1d1846dbb7..e9cf69d3fe 100644 WINE_CONFIG_DLL(ext-ms-win-gdi-dc-create-l1-1-1) diff --git a/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/Makefile.in b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/Makefile.in new file mode 100644 -index 0000000000..16eee7588f +index 00000000000..16eee7588ff --- /dev/null +++ b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/Makefile.in @@ -0,0 +1,4 @@ @@ -38,7 +38,7 @@ index 0000000000..16eee7588f + main.c diff --git a/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/ext-ms-win-appmodel-usercontext-l1-1-0.spec b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/ext-ms-win-appmodel-usercontext-l1-1-0.spec new file mode 100644 -index 0000000000..7642d156c9 +index 00000000000..7642d156c94 --- /dev/null +++ b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/ext-ms-win-appmodel-usercontext-l1-1-0.spec @@ -0,0 +1,3 @@ @@ -47,7 +47,7 @@ index 0000000000..7642d156c9 +@ stub UserContextExtSetToken diff --git a/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c new file mode 100644 -index 0000000000..7a9e75f710 +index 00000000000..7a9e75f7109 --- /dev/null +++ b/dlls/ext-ms-win-appmodel-usercontext-l1-1-0/main.c @@ -0,0 +1,35 @@ @@ -87,5 +87,5 @@ index 0000000000..7a9e75f710 + return S_OK; +} -- -2.12.2 +2.14.1 diff --git a/patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch b/patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch index 034bfdcf..38f8ea0f 100644 --- a/patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch +++ b/patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch @@ -1,4 +1,4 @@ -From 1e3f6686e2daedc334871a6af186adbd628c2d92 Mon Sep 17 00:00:00 2001 +From 8cb1d2c62815a03ded72eebeb9ac0080f8e382a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 22 Feb 2015 01:21:18 +0100 Subject: dxva2/tests: Add tests for dxva2 decoder. @@ -12,20 +12,20 @@ Subject: dxva2/tests: Add tests for dxva2 decoder. create mode 100644 dlls/dxva2/tests/dxva2.c diff --git a/configure.ac b/configure.ac -index 7ab221b..37261ef 100644 +index edeeb0de6f9..fb65b3b357a 100644 --- a/configure.ac +++ b/configure.ac -@@ -2993,6 +2993,7 @@ WINE_CONFIG_DLL(dxgi,,[implib]) +@@ -3120,6 +3120,7 @@ WINE_CONFIG_DLL(dxgi,,[implib]) WINE_CONFIG_TEST(dlls/dxgi/tests) WINE_CONFIG_LIB(dxguid) WINE_CONFIG_DLL(dxva2) +WINE_CONFIG_TEST(dlls/dxva2/tests) WINE_CONFIG_DLL(esent) WINE_CONFIG_DLL(evr) - WINE_CONFIG_DLL(explorerframe,,[clean]) + WINE_CONFIG_TEST(dlls/evr/tests) diff --git a/dlls/dxva2/tests/Makefile.in b/dlls/dxva2/tests/Makefile.in new file mode 100644 -index 0000000..10d6af5 +index 00000000000..10d6af55667 --- /dev/null +++ b/dlls/dxva2/tests/Makefile.in @@ -0,0 +1,5 @@ @@ -36,7 +36,7 @@ index 0000000..10d6af5 + dxva2.c diff --git a/dlls/dxva2/tests/dxva2.c b/dlls/dxva2/tests/dxva2.c new file mode 100644 -index 0000000..dcbb990 +index 00000000000..dcbb990ee5c --- /dev/null +++ b/dlls/dxva2/tests/dxva2.c @@ -0,0 +1,371 @@ @@ -412,5 +412,5 @@ index 0000000..dcbb990 + test_decoder_service(window); +} -- -2.5.1 +2.14.1 diff --git a/patches/ntdll-WriteWatches/0001-ntdll-Avoid-race-conditions-with-write-watches-in-Nt.patch b/patches/ntdll-WriteWatches/0001-ntdll-Avoid-race-conditions-with-write-watches-in-Nt.patch index 899a68f9..67811400 100644 --- a/patches/ntdll-WriteWatches/0001-ntdll-Avoid-race-conditions-with-write-watches-in-Nt.patch +++ b/patches/ntdll-WriteWatches/0001-ntdll-Avoid-race-conditions-with-write-watches-in-Nt.patch @@ -1,39 +1,69 @@ -From c6dc4f67d20bd4deb3c8655da9dae191af34135a Mon Sep 17 00:00:00 2001 +From 6a0ddd70ba0d958f5e0191c4ae5b74f3507a7aaf Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Tue, 10 Feb 2015 06:36:52 +0100 Subject: ntdll: Avoid race-conditions with write watches in NtReadFile. Rebased against kernel32-NamedPipe patchset by Sebastian Lackner . --- - dlls/kernel32/tests/virtual.c | 8 ++++---- + dlls/kernel32/tests/virtual.c | 16 ++-------------- dlls/ntdll/file.c | 18 ++++++++++++++++++ - 2 files changed, 22 insertions(+), 4 deletions(-) + 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c -index 7366ef17384..6ad887fc34b 100644 +index 1d611cdacff..2ecd5611924 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c -@@ -1750,16 +1750,16 @@ static void test_write_watch(void) +@@ -1840,13 +1840,10 @@ static DWORD CALLBACK read_pipe( void *arg ) + "%u: ConnectNamedPipe failed %u\n", args->index, GetLastError() ); - num_bytes = 0; - success = GetOverlappedResult( readpipe, &overlapped, &num_bytes, TRUE ); -- todo_wine ok( success, "GetOverlappedResult failed %u\n", GetLastError() ); -- todo_wine ok( num_bytes == sizeof(testdata), "wrong number of bytes read\n" ); -- todo_wine ok( !memcmp( base, testdata, sizeof(testdata)), "didn't receive expected data\n" ); -+ ok( success, "GetOverlappedResult failed %u\n", GetLastError() ); -+ ok( num_bytes == sizeof(testdata), "wrong number of bytes read\n" ); -+ ok( !memcmp( base, testdata, sizeof(testdata)), "didn't receive expected data\n" ); + success = ReadFile( args->pipe, args->base, args->size, &num_bytes, NULL ); +- todo_wine +- { + ok( success, "%u: ReadFile failed %u\n", args->index, GetLastError() ); + ok( num_bytes == sizeof(testdata), "%u: wrong number of bytes read %u\n", args->index, num_bytes ); + ok( !memcmp( args->base, testdata, sizeof(testdata)), + "%u: didn't receive expected data\n", args->index ); +- } + return 0; + } - count = 64; - memset( results, 0, sizeof(results) ); - ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); - ok( !ret, "GetWriteWatch failed %u\n", GetLastError() ); - todo_wine ok( count == 1, "wrong count %lu\n", count ); -- todo_wine ok( results[0] == base, "wrong result %p\n", results[0] ); -+ ok( results[0] == base, "wrong result %p\n", results[0] ); +@@ -2056,22 +2053,16 @@ static void test_write_watch(void) - CloseHandle( readpipe ); - CloseHandle( writepipe ); + num_bytes = 0; + success = GetOverlappedResult( readpipe, &overlapped, &num_bytes, TRUE ); +- todo_wine +- { + ok( success, "%u: GetOverlappedResult failed %u\n", i, GetLastError() ); + ok( num_bytes == sizeof(testdata), "%u: wrong number of bytes read %u\n", i, num_bytes ); + ok( !memcmp( base, testdata, sizeof(testdata)), "%u: didn't receive expected data\n", i ); +- } + + count = 64; + memset( results, 0, sizeof(results) ); + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "%u: GetWriteWatch failed %u\n", i, GetLastError() ); +- todo_wine +- { +- ok( count == 1, "%u: wrong count %lu\n", i, count ); ++ todo_wine ok( count == 1, "%u: wrong count %lu\n", i, count ); + ok( results[0] == base, "%u: wrong result %p\n", i, results[0] ); +- } + + CloseHandle( readpipe ); + CloseHandle( writepipe ); +@@ -2121,11 +2112,8 @@ static void test_write_watch(void) + memset( results, 0, sizeof(results) ); + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "%u: GetWriteWatch failed %u\n", i, GetLastError() ); +- todo_wine +- { +- ok( count == 1, "%u: wrong count %lu\n", i, count ); ++ todo_wine ok( count == 1, "%u: wrong count %lu\n", i, count ); + ok( results[0] == base, "%u: wrong result %p\n", i, results[0] ); +- } + + CloseHandle( readpipe ); + CloseHandle( writepipe ); diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 0381e558ff6..a4da492573c 100644 --- a/dlls/ntdll/file.c diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index a48929fc..949d2e7f 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "0991e015316e382f787b1f5c93b483c3faf04b9b" + echo "25a8773d21d0113dc5e4f9dee49d9d9dbeed347b" } # Show version information @@ -6813,7 +6813,7 @@ fi # | # | Modified files: # | * dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, dlls/ntdll/signal_i386.c, dlls/ntdll/virtual.c, dlls/ws2_32/socket.c, -# | include/winternl.h +# | dlls/ws2_32/tests/sock.c, include/winternl.h # | if test "$enable_ws2_32_WriteWatches" -eq 1; then patch_apply ws2_32-WriteWatches/0001-ntdll-Expose-wine_uninterrupted_-read-write-_memory-.patch diff --git a/patches/ws2_32-WriteWatches/0002-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch b/patches/ws2_32-WriteWatches/0002-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch index 43f1afce..943d9f82 100644 --- a/patches/ws2_32-WriteWatches/0002-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch +++ b/patches/ws2_32-WriteWatches/0002-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch @@ -1,4 +1,4 @@ -From 1f6c4cab7763e40ed66d3d9336e47be045a4abb1 Mon Sep 17 00:00:00 2001 +From 7c4a78a160ee6b8a23a1eac779901faae5cb2335 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 21 Nov 2014 12:22:46 +0100 Subject: ws2_32: Avoid race-conditions of async WSARecv() operations with @@ -37,8 +37,9 @@ Based on the code it looks like we could savely remove the write-watch check at the beginning of WS2_recv_base, which might make the application think that data is immediately available. --- - dlls/ws2_32/socket.c | 15 ++++++++++++++- - 1 file changed, 14 insertions(+), 1 deletion(-) + dlls/ws2_32/socket.c | 15 ++++++++++++++- + dlls/ws2_32/tests/sock.c | 11 +++-------- + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 681f340bc6d..ac356035cc6 100644 @@ -66,6 +67,64 @@ index 681f340bc6d..ac356035cc6 100644 return -1; } +diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c +index 02f7473215d..e1e37404b72 100644 +--- a/dlls/ws2_32/tests/sock.c ++++ b/dlls/ws2_32/tests/sock.c +@@ -6962,18 +6962,15 @@ static void test_write_watch(void) + send(src, "test message", sizeof("test message"), 0); + + ret = GetOverlappedResult( (HANDLE)dest, &ov, &bytesReturned, TRUE ); +- todo_wine +- { + ok( ret, "GetOverlappedResult failed %u\n", GetLastError() ); + ok( bytesReturned == sizeof("test message"), "wrong size %u\n", bytesReturned ); + ok( !memcmp( base, "test ", 5 ), "wrong data %s\n", base ); + ok( !memcmp( base + 0x4000, "message", 8 ), "wrong data %s\n", base + 0x4000 ); +- } + + count = 64; + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "GetWriteWatch failed %u\n", GetLastError() ); +- ok( count == 0, "wrong count %lu\n", count ); ++ todo_wine ok( count == 0, "wrong count %lu\n", count ); + + memset( base, 0, size ); + count = 64; +@@ -6984,7 +6981,6 @@ static void test_write_watch(void) + bufs[1].len = 0x4000; + bufs[1].buf = base + 0x2000; + ret = WSARecvFrom( dest, bufs, 2, NULL, &flags, &addr, &addr_len, &ov, NULL); +- todo_wine + ok(ret == SOCKET_ERROR && GetLastError() == ERROR_IO_PENDING, + "WSARecv failed - %d error %d\n", ret, GetLastError()); + +@@ -6992,7 +6988,6 @@ static void test_write_watch(void) + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "GetWriteWatch failed %u\n", GetLastError() ); + ok( count == 5, "wrong count %lu\n", count ); +- todo_wine + ok( !base[0], "data set\n" ); + + send(src, "test message", sizeof("test message"), 0); +@@ -7006,7 +7001,7 @@ static void test_write_watch(void) + count = 64; + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "GetWriteWatch failed %u\n", GetLastError() ); +- ok( count == 0, "wrong count %lu\n", count ); ++ todo_wine ok( count == 0, "wrong count %lu\n", count ); + + memset( base, 0, size ); + count = 64; +@@ -7035,7 +7030,7 @@ static void test_write_watch(void) + count = 64; + ret = pGetWriteWatch( WRITE_WATCH_FLAG_RESET, base, size, results, &count, &pagesize ); + ok( !ret, "GetWriteWatch failed %u\n", GetLastError() ); +- ok( count == 0, "wrong count %lu\n", count ); ++ todo_wine ok( count == 0, "wrong count %lu\n", count ); + } + WSACloseEvent( event ); + closesocket( dest ); -- 2.14.1