From 1fc486ada3bfc63e72703a494aa180b0a9c6587f Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Sat, 19 Aug 2017 17:15:24 +0200 Subject: ipcpd, irmd: Fix data races Fixes a data race in the IRMd when IPCPs bail immediately after being created (e.g. due to an error). Fixes a race between the acceptor threads and the threads managed by threadpool manager upon shutdown. --- src/ipcpd/ipcp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/ipcpd/ipcp.c') diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c index 7066fb04..368c6eb8 100644 --- a/src/ipcpd/ipcp.c +++ b/src/ipcpd/ipcp.c @@ -58,8 +58,6 @@ void ipcp_sig_handler(int sig, if (ipcp_get_state() == IPCP_OPERATIONAL) ipcp_set_state(IPCP_SHUTDOWN); } - - tpm_stop(); default: return; } @@ -689,8 +687,9 @@ int ipcp_boot() void ipcp_shutdown() { - tpm_fini(); pthread_join(ipcpi.acceptor, NULL); + tpm_stop(); + tpm_fini(); log_info("IPCP %d shutting down.", getpid()); } -- cgit v1.2.3