[multipathd] signal deadlock
authorBenjamin Marzinski <bmarzins@redhat.com>
Thu, 2 Apr 2009 20:36:41 +0000 (22:36 +0200)
committerChristophe Varoqui <christophe.varoqui@free.fr>
Thu, 2 Apr 2009 20:36:41 +0000 (22:36 +0200)
commitbe6b014d785d0e6bc34d3a5f2ac531df8b3d8690
treece765485441464f882033334df3af411b905d878
parent0a0319d381249760c71023edbe0ac9c093bb4a74
[multipathd] signal deadlock

If multipathd is run with -v3, both the SIGHUP, and the SIGUSR1 signal handlers
will log a message.  If a multipathd thread receives one of these signals while
it has a log lock held, it deadlocks itself. Also, the SIGHUP handler will grab
the vecs lock, so if any thread receives a SIGHUP while holding the vecs lock,
it deadlocks itself.  This commit blocks the appropriate signals to guard
against this.
libmultipath/lock.c
libmultipath/lock.h
libmultipath/log_pthread.c
libmultipath/waiter.c
multipathd/main.c