summaryrefslogtreecommitdiff
path: root/debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-11-27 15:34:19 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-11-27 15:34:19 +0100
commit248c87f2ed7f3daaec3d8fef53ee4bb02c1bb837 (patch)
tree896c2b565ed7f4aabe28fb2f9114315c408514d3 /debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch
parenta785d73379789f57e130fcce6712311b114ca470 (diff)
add patch series
Diffstat (limited to 'debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch')
-rw-r--r--debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch b/debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch
new file mode 100644
index 00000000..7ce4f705
--- /dev/null
+++ b/debian/patches/translators-list0001-libfshelp-acquire-references-to-control-ports.patch
@@ -0,0 +1,59 @@
+From 3ca5ff92bfa08b55b5c41feea81612d4e7b468a0 Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Fri, 20 Nov 2015 12:46:56 +0100
+Subject: [PATCH hurd 1/3] libfshelp: acquire references to control ports
+
+* libfshelp/translator-list.c (translator_ihash_cleanup): Release reference.
+(fshelp_set_active_translator): Acquire reference
+---
+ libfshelp/translator-list.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/libfshelp/translator-list.c b/libfshelp/translator-list.c
+index c87bbaa..87d7f6a 100644
+--- a/libfshelp/translator-list.c
++++ b/libfshelp/translator-list.c
+@@ -49,12 +49,13 @@ static pthread_mutex_t translator_ihash_lock = PTHREAD_MUTEX_INITIALIZER;
+ static void
+ translator_ihash_cleanup (void *element, void *arg)
+ {
++ error_t err;
+ struct translator *translator = element;
+
+ if (translator->pi)
+ ports_port_deref (translator->pi);
+- /* No need to deallocate translator->active, we only keep the name of
+- the port, not a reference. */
++ err = mach_port_deallocate (mach_task_self (), translator->active);
++ assert_perror (err);
+ free (translator->name);
+ free (translator);
+ }
+@@ -124,8 +125,14 @@ fshelp_set_active_translator (struct port_info *pi,
+ t->pi = pi;
+ }
+
+- /* No need to increment the reference count, we only keep the
+- name, not a reference. */
++ if (MACH_PORT_VALID (t->active))
++ {
++ err = mach_port_deallocate (mach_task_self (), t->active);
++ assert_perror (err);
++ }
++ err = mach_port_mod_refs (mach_task_self (), active,
++ MACH_PORT_RIGHT_SEND, +1);
++ assert_perror (err);
+ t->active = active;
+ }
+ else
+@@ -143,6 +150,7 @@ error_t
+ fshelp_remove_active_translator (mach_port_t active)
+ {
+ error_t err = 0;
++
+ pthread_mutex_lock (&translator_ihash_lock);
+
+ struct translator *t = NULL;
+--
+2.1.4
+