diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-11-06 16:51:11 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-11-06 17:10:39 +0100 |
commit | 102293accbc6ac3a21d68ab98e058263b316a407 (patch) | |
tree | e01388237cfbc0f48634fa55665e71154e0a490a /src/ctnl.c | |
parent | e61ac9a2e58cdcf6dc9a12d32b1f221e078e5d05 (diff) |
conntrackd: fix deadlock due to wrong nested signal blocking
The existing code may nest several signal blocking and unblocking
calls in different paths of the code. This may result in deadlocks
while receiving signals.
This patch simplifies the signal blocking approach. Now signals
are blocked in three paths:
1) Internal timers handling, while running timer callback
for expired timers.
2) File descriptor handling, while running file descriptor
callbacks.
3) While handling signals, to avoid that SIGINT and SIGTERM
in a row results in a deadlock.
Thanks a lot to Ulrich Weber <ulrich.weber@sophos.com> for
discussing a fix for this problem.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/ctnl.c')
0 files changed, 0 insertions, 0 deletions