diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-01-14 21:09:57 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-01-14 21:09:57 +0000 |
commit | 722929451b0eb0af0f57282ecb47171ae49be12f (patch) | |
tree | 714ddca5df8f59d694917b9186daa766c91d06e3 /channels/chan_oss.c | |
parent | 2cf287b2e65059dd3b303fee717c8b7dfa64a93a (diff) |
Deadlock between dahdi_request() and pri_dchannel() processing an incomming call.
The sig_pri_new_ast_channel() is called with the channel private lock held
when pri_dchannel() calls it and no channel private lock held when
dahdi_request() calls it. The use of pri_grab() in
sig_pri_new_ast_channel() could leave the channel private lock held when
it returns if the lock was not held before calling it.
Make sig_pri_new_ast_channel() just lock the PRI span lock instead of
using pri_grab(). It is safe to do this because dahdi_request() does not
have the channel private lock and the deadlock potential with the PRI span
lock is only between pri_dchannel() and other threads.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@301946 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_oss.c')
0 files changed, 0 insertions, 0 deletions