<p>Patch set 1:<span style="border-radius: 3px; display: inline-block; margin: 0 2px; padding: 4px;background-color: #ffd4d4; color: #000000;">Code-Review -1</span></p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/12846">View Change</a></p><p>1 comment:</p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0;"><p><a href="https://gerrit.asterisk.org/#/c/12846/1/channels/sig_pri.c">File channels/sig_pri.c:</a></p><ul style="list-style: none; padding: 0;"><li style="margin: 0; padding: 0 0 0 16px;"><p style="margin-bottom: 4px;"><a href="https://gerrit.asterisk.org/#/c/12846/1/channels/sig_pri.c@1397">Patch Set #1, Line 1397:</a> </p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;"><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><br>  sig_pri_lock_owner(pri, chanpos);<br>     if (pri->pvts[chanpos]->owner) {<br>                ast_queue_hangup(pri->pvts[chanpos]->owner);<br>            ast_channel_unlock(pri->pvts[chanpos]->owner);<br>  }<br><br>   /* Tell the CDR this DAHDI channel hung up */<br> if(pri->pvts[chanpos]->owner) {<br>         ast_set_hangupsource(pri->pvts[chanpos]->owner, ast_channel_name(pri->pvts[chanpos]->owner), 0);<br>  }<br></pre></blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">This patch creates a deadlock potential between the already held sig_pri_lock_private() and attempting to get the owner channel lock.  The locking order is channel before private lock.</p><p style="white-space: pre-wrap; word-wrap: break-word;">Should change to:</p><p style="white-space: pre-wrap; word-wrap: break-word;">struct ast_channel *owner;</p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sig_pri_lock_owner(pri, chanpos);<br>owner = pri->pvts[chanpos]->owner;<br>if (owner) {<br>   ao2_ref(owner, +1);<br>   ast_queue_hangup(owner);<br>   ast_channel_unlock(owner);</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">   /* Tell the CDR this DAHDI channel hung up */<br>   sig_pri_unlock_private(pri->pvts[chanpos]);<br>   ast_set_hangup_source(owner, ast_channel_name(owner));<br>   sig_pri_lock_private(pri->pvts[chanpos]);<br>   ao2_ref(owner, -1);<br>}</pre></li></ul></li></ul><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/12846">change 12846</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/12846"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 16 </div>
<div style="display:none"> Gerrit-Change-Id: I0f588a4bcf15ccd0648fd69830d1b801c3f21b7c </div>
<div style="display:none"> Gerrit-Change-Number: 12846 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Frederic LE FOLL <frederic.lefoll@c-s.fr> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: Richard Mudgett <rmudgett@digium.com> </div>
<div style="display:none"> Gerrit-Comment-Date: Thu, 05 Sep 2019 16:43:38 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-Has-Labels: Yes </div>
<div style="display:none"> Gerrit-MessageType: comment </div>