Added patch to fix crash when a device driver segfaults during an open file request.

This commit is contained in:
Sebastian Lackner 2017-05-27 17:46:03 +02:00
parent 1a5a9b3087
commit b7f1c682f3
3 changed files with 56 additions and 0 deletions

View File

@ -326,6 +326,7 @@ patch_enable_all ()
enable_server_Signal_Thread="$1"
enable_server_Stored_ACLs="$1"
enable_server_Timestamp_Compat="$1"
enable_server_device_manager_destroy="$1"
enable_setupapi_DelReg="$1"
enable_setupapi_DiskSpaceList="$1"
enable_setupapi_Display_Device="$1"
@ -1214,6 +1215,9 @@ patch_enable ()
server-Timestamp_Compat)
enable_server_Timestamp_Compat="$2"
;;
server-device_manager_destroy)
enable_server_device_manager_destroy="$2"
;;
setupapi-DelReg)
enable_setupapi_DelReg="$2"
;;
@ -7005,6 +7009,18 @@ if test "$enable_server_Timestamp_Compat" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-device_manager_destroy
# |
# | Modified files:
# | * server/device.c
# |
if test "$enable_server_device_manager_destroy" -eq 1; then
patch_apply server-device_manager_destroy/0001-server-Fix-crash-when-a-device-driver-segfaults-duri.patch
(
printf '%s\n' '+ { "Michael Müller", "server: Fix crash when a device driver segfaults during an open file request.", 1 },';
) >> "$patchlist"
fi
# Patchset setupapi-DelReg
# |
# | This patchset fixes the following Wine bugs:

View File

@ -0,0 +1,39 @@
From 7947b082f3d34c30f2c69e236db6723985faf35f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 May 2017 15:52:32 +0200
Subject: server: Fix crash when a device driver segfaults during an open file
request.
---
server/device.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/server/device.c b/server/device.c
index 42f3e797ab9..a5928f520a9 100644
--- a/server/device.c
+++ b/server/device.c
@@ -623,7 +623,11 @@ static void delete_device( struct device *device )
if (!device->manager) return; /* already deleted */
LIST_FOR_EACH_ENTRY_SAFE( file, next, &device->files, struct device_file, entry )
+ {
+ grab_object( &file->obj );
delete_file( file );
+ release_object( &file->obj );
+ }
unlink_named_object( &device->obj );
list_remove( &device->entry );
@@ -651,7 +655,9 @@ static void device_manager_destroy( struct object *obj )
while ((ptr = list_head( &manager->devices )))
{
struct device *device = LIST_ENTRY( ptr, struct device, entry );
+ grab_object( &device->obj );
delete_device( device );
+ release_object( &device->obj );
}
}
--
2.12.2

View File

@ -0,0 +1 @@
Fixes: Fix crash when a device driver segfaults during an open file request