diff --git a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch index 5cbb70db..9969909a 100644 --- a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch +++ b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch @@ -1,4 +1,4 @@ -From 291fd879b030b16238329ff4f530ab3577ea6fc0 Mon Sep 17 00:00:00 2001 +From c204c9ed2a8504868c3cbf487e7a29c4e7254d3f Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:09:22 -0500 Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. @@ -346,7 +346,7 @@ index 00000000000..a50a755149a + +extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index 8f20da7eece..befa355a4fc 100644 +index 10884a7a673..28cc48e04bf 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -89,6 +89,7 @@ @@ -357,7 +357,7 @@ index 8f20da7eece..befa355a4fc 100644 #include "wine/list.h" #include "wine/debug.h" -@@ -2081,6 +2082,7 @@ static void start_main_thread(void) +@@ -2082,6 +2083,7 @@ static void start_main_thread(void) signal_init_thread( teb ); dbg_init(); startup_info_size = server_init_process(); @@ -366,19 +366,19 @@ index 8f20da7eece..befa355a4fc 100644 init_cpu_info(); init_files(); diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c -index a388247beb2..79b83589d81 100644 +index 6a3224d8385..de65f936a59 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c -@@ -104,7 +104,7 @@ timeout_t server_start_time = 0; /* time of server startup */ - sigset_t server_block_set; /* signals to block during server calls */ +@@ -106,7 +106,7 @@ sigset_t server_block_set; /* signals to block during server calls */ static int fd_socket = -1; /* socket to exchange file descriptors with the server */ + static int initial_cwd = -1; static pid_t server_pid; -static pthread_mutex_t fd_cache_mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t fd_cache_mutex = PTHREAD_MUTEX_INITIALIZER; /* atomically exchange a 64-bit value */ static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val ) -@@ -801,7 +801,7 @@ void wine_server_send_fd( int fd ) +@@ -803,7 +803,7 @@ void wine_server_send_fd( int fd ) * * Receive a file descriptor passed from the server. */ @@ -422,5 +422,5 @@ index b9dbfa322bc..99e57eca44c 100644 int do_esync(void) { -- -2.33.0 +2.34.1 diff --git a/patches/eventfd_synchronization/0013-server-Create-eventfd-file-descriptors-for-process-o.patch b/patches/eventfd_synchronization/0013-server-Create-eventfd-file-descriptors-for-process-o.patch index 798b0741..a996157a 100644 --- a/patches/eventfd_synchronization/0013-server-Create-eventfd-file-descriptors-for-process-o.patch +++ b/patches/eventfd_synchronization/0013-server-Create-eventfd-file-descriptors-for-process-o.patch @@ -1,4 +1,4 @@ -From a1368a522fdc4e741fee7bfbd84eec632bcf4ce0 Mon Sep 17 00:00:00 2001 +From 24fa0367db3de31fdc2da7bd61c27699c091cdaa Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 15:11:12 -0500 Subject: [PATCH] server: Create eventfd file descriptors for process objects. @@ -11,10 +11,10 @@ Subject: [PATCH] server: Create eventfd file descriptors for process objects. 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/server/esync.c b/server/esync.c -index d61dfdcd956..e18b76bff5b 100644 +index c7b0323f204..27049ffbdb0 100644 --- a/server/esync.c +++ b/server/esync.c -@@ -297,6 +297,24 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, +@@ -295,6 +295,24 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, #endif } @@ -49,10 +49,10 @@ index 7ca4ca89394..6a0a367124d 100644 void esync_init(void); +int esync_create_fd( int initval, int flags ); diff --git a/server/process.c b/server/process.c -index e144593445d..f9468c771d0 100644 +index ca9844c5c90..eca2f8f4bca 100644 --- a/server/process.c +++ b/server/process.c -@@ -49,6 +49,7 @@ +@@ -63,6 +63,7 @@ #include "request.h" #include "user.h" #include "security.h" @@ -60,7 +60,7 @@ index e144593445d..f9468c771d0 100644 /* process object */ -@@ -81,6 +82,7 @@ static struct security_descriptor *process_get_sd( struct object *obj ); +@@ -95,6 +96,7 @@ static struct security_descriptor *process_get_sd( struct object *obj ); static void process_poll_event( struct fd *fd, int event ); static struct list *process_get_kernel_obj_list( struct object *obj ); static void process_destroy( struct object *obj ); @@ -68,7 +68,7 @@ index e144593445d..f9468c771d0 100644 static void terminate_process( struct process *process, struct thread *skip, int exit_code ); static const struct object_ops process_ops = -@@ -91,7 +93,7 @@ static const struct object_ops process_ops = +@@ -105,7 +107,7 @@ static const struct object_ops process_ops = add_queue, /* add_queue */ remove_queue, /* remove_queue */ process_signaled, /* signaled */ @@ -77,15 +77,15 @@ index e144593445d..f9468c771d0 100644 no_satisfied, /* satisfied */ no_signal, /* signal */ no_get_fd, /* get_fd */ -@@ -555,6 +557,7 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla - process->trace_data = 0; +@@ -684,6 +686,7 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla process->rawinput_mouse = NULL; process->rawinput_kbd = NULL; + memset( &process->image_info, 0, sizeof(process->image_info) ); + process->esync_fd = -1; list_init( &process->kernel_object ); list_init( &process->thread_list ); list_init( &process->locks ); -@@ -611,6 +614,9 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla +@@ -741,6 +744,9 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla if (!token_assign_label( process->token, security_high_label_sid )) goto error; @@ -95,7 +95,7 @@ index e144593445d..f9468c771d0 100644 set_fd_events( process->msg_fd, POLLIN ); /* start listening to events */ return process; -@@ -657,6 +663,7 @@ static void process_destroy( struct object *obj ) +@@ -787,6 +793,7 @@ static void process_destroy( struct object *obj ) if (process->token) release_object( process->token ); free( process->dir_cache ); free( process->image ); @@ -103,7 +103,7 @@ index e144593445d..f9468c771d0 100644 } /* dump a process on stdout for debugging purposes */ -@@ -674,6 +681,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry +@@ -804,6 +811,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry return !process->running_threads; } @@ -118,17 +118,17 @@ index e144593445d..f9468c771d0 100644 { access = default_map_access( obj, access ); diff --git a/server/process.h b/server/process.h -index 0e1a83859d9..71aae9c9494 100644 +index 632faf9c4bf..1ba69b3406e 100644 --- a/server/process.h +++ b/server/process.h -@@ -87,6 +87,7 @@ struct process - const struct rawinput_device *rawinput_mouse; /* rawinput mouse device, if any */ +@@ -90,6 +90,7 @@ struct process const struct rawinput_device *rawinput_kbd; /* rawinput keyboard device, if any */ struct list kernel_object; /* list of kernel object pointers */ + pe_image_info_t image_info; /* main exe image info */ + int esync_fd; /* esync file descriptor (signaled on exit) */ }; /* process functions */ -- -2.30.2 +2.34.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 30da77fe..1a3dc330 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "b173a96237b1f1c02c642f3d4a57ecb507ebc664" + echo "2318484e1e33cb30f00eb9a62cb9aa5f83e5dc99" } # Show version information diff --git a/staging/upstream-commit b/staging/upstream-commit index 4286162a..24e1349a 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -b173a96237b1f1c02c642f3d4a57ecb507ebc664 +2318484e1e33cb30f00eb9a62cb9aa5f83e5dc99