[netatalk/f17] fixes: #835714 - Netatalk 2.2.2-1: Unable to unmount afpd share
Lukáš Nykrýn
lnykryn at fedoraproject.org
Wed Jul 18 08:16:10 UTC 2012
commit 1addc2295fd3e8dc9ca0a6068bd817f22aa16b46
Author: Lukas Nykryn <lnykryn at redhat.com>
Date: Mon Jul 16 13:21:23 2012 +0200
fixes: #835714 - Netatalk 2.2.2-1: Unable to unmount afpd share
netatalk-2.2.3-sigterm.patch | 71 ++++++++++++++++++++++++++++++++++++++++++
netatalk.spec | 8 ++++-
2 files changed, 78 insertions(+), 1 deletions(-)
---
diff --git a/netatalk-2.2.3-sigterm.patch b/netatalk-2.2.3-sigterm.patch
new file mode 100644
index 0000000..169a0d6
--- /dev/null
+++ b/netatalk-2.2.3-sigterm.patch
@@ -0,0 +1,71 @@
+From 25e03ec9edd863136008881a4a57ea9a788d34b3 Mon Sep 17 00:00:00 2001
+From: Frank Lahm <franklahm at googlemail.com>
+Date: Mon, 18 Jun 2012 16:26:28 +0200
+Subject: [PATCH] Block SIGTERM when calling pam_close_session
+
+---
+ etc/afpd/afp_dsi.c | 11 +++++++++--
+ 1 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/etc/afpd/afp_dsi.c b/etc/afpd/afp_dsi.c
+index bf454e1..6c6bc7d 100644
+--- a/etc/afpd/afp_dsi.c
++++ b/etc/afpd/afp_dsi.c
+@@ -80,7 +80,8 @@ static sigjmp_buf recon_jmp;
+ static void afp_dsi_close(AFPObj *obj)
+ {
+ DSI *dsi = obj->handle;
+-
++ sigset_t sigs;
++
+ close(obj->ipc_fd);
+ obj->ipc_fd = -1;
+
+@@ -97,8 +98,14 @@ static void afp_dsi_close(AFPObj *obj)
+ }
+
+ close_all_vol();
+- if (obj->logout)
++
++ if (obj->logout) {
++ /* Block SIGTERM, PAM might send us a SIGTERM in (*obj->logout)() -> pam_close_session() */
++ pthread_sigmask(SIG_BLOCK, &sigs, NULL);
++ sigemptyset(&sigs);
++ sigaddset(&sigs, SIGTERM);
+ (*obj->logout)();
++ }
+
+ LOG(log_note, logtype_afpd, "AFP statistics: %.2f KB read, %.2f KB written",
+ dsi->read_count/1024.0, dsi->write_count/1024.0);
+--
+1.7.4.1
+
+From d8f375c4fbff7a27768ce6efebec64ab193734ee Mon Sep 17 00:00:00 2001
+From: Frank Lahm <franklahm at googlemail.com>
+Date: Wed, 20 Jun 2012 15:33:26 +0200
+Subject: [PATCH] Fix signal blocking, pthread_sigmask was called before mask initialisation. Also block all sigs instead of only SIGTERM (think I saw SIGHUP somewhere).
+
+---
+ etc/afpd/afp_dsi.c | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/etc/afpd/afp_dsi.c b/etc/afpd/afp_dsi.c
+index 6c6bc7d..7779b23 100644
+--- a/etc/afpd/afp_dsi.c
++++ b/etc/afpd/afp_dsi.c
+@@ -100,10 +100,9 @@ static void afp_dsi_close(AFPObj *obj)
+ close_all_vol();
+
+ if (obj->logout) {
+- /* Block SIGTERM, PAM might send us a SIGTERM in (*obj->logout)() -> pam_close_session() */
++ /* Block sigs, PAM/systemd/whoever might send us a SIG??? in (*obj->logout)() -> pam_close_session() */
++ sigfillset(&sigs);
+ pthread_sigmask(SIG_BLOCK, &sigs, NULL);
+- sigemptyset(&sigs);
+- sigaddset(&sigs, SIGTERM);
+ (*obj->logout)();
+ }
+
+--
+1.7.4.1
+
diff --git a/netatalk.spec b/netatalk.spec
index 01f698b..a219060 100644
--- a/netatalk.spec
+++ b/netatalk.spec
@@ -1,7 +1,7 @@
Summary: Daemon which provides POSIX-compliant *NIX/*BSD systems with the ability to share files and printers with Apple Macintosh
Name: netatalk
Version: 2.2.2
-Release: 2%{?dist}
+Release: 3%{?dist}
Epoch: 4
License: GPLv2+
Group: System Environment/Daemons
@@ -10,6 +10,7 @@ Source2: netatalk.pam-system-auth
Patch1: netatalk-2.0.2-uams_no_pie.patch
Patch2: netatalk-2.0.4-extern_ucreator.patch
+Patch3: netatalk-2.2.3-sigterm.patch
Url: http://netatalk.sourceforge.net/
Requires: pam
@@ -41,6 +42,7 @@ programs.
%patch1 -p1 -b .uams_no_pie
%patch2 -p1 -b .extern_ucreator
+%patch3 -p1 -b .sigterm
ln -s ./NEWS ChangeLog
@@ -163,6 +165,10 @@ fi
%{_mandir}/man*/netatalk-config.1*
%changelog
+* Mon Jul 16 2012 Lukáš Nykrýn <lnykryn at redhat.com> - 4:2.2.2-3
+- fixes: #835714 - Netatalk 2.2.2-1: Unable to unmount afpd share from OSX
+ client, crashes Finder netatalk-2.2.2-1
+
* Tue Jun 12 2012 Lukáš Nykrýn <lnykryn at redhat.com> - 4:2.2.2-2
- fixes: #831001 - netatalk pam configuration has invalid entry
More information about the scm-commits
mailing list