<p><a href="https://gerrit.osmocom.org/9252">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.osmocom.org/#/c/9252/1/src/e1_input.c">File src/e1_input.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.osmocom.org/#/c/9252/1/src/e1_input.c@429">Patch Set #1, Line 429:</a> <code style="font-family:monospace,monospace">            /* Remove our counter group from the global counter list</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">I have the feeling this code is wrong. […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">These parts of the talloc API are not very intuitive.</p><p style="white-space: pre-wrap; word-wrap: break-word;">As far as I undestand it, references obtained with talloc_reference() are counted in addition to the original allocation. Which means their count drops to zero, not to 1, before the last talloc_free().</p><p style="white-space: pre-wrap; word-wrap: break-word;">We use talloc_unlink for the rate counters because we want to dereference the last remaining parent context (line) pointer to free the counters. So we remove our reference and check if we were last, then deref the parent context pointer (line) to free line->rate_ctr, then free the parent context. There might be other ways of doing this, but this one works, and the other ways aren't any more intuitive than this one.</p><p style="white-space: pre-wrap; word-wrap: break-word;">Additional references to line->driver_data are implicitly handled by talloc_free().<br>We don't care which parent context's reference is removed in that case. The last talloc_free() occurs with a reference count of 0 and will free driver_data.</p><p style="white-space: pre-wrap; word-wrap: break-word;">Maybe we should add a comment to clarify this, but on the other hand it is not unreasonable to expect readers of the code to understand the nuances of the talloc API.</p></li></ul></li></ul><p>To view, visit <a href="https://gerrit.osmocom.org/9252">change 9252</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.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.osmocom.org/9252"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-abis </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: comment </div>
<div style="display:none"> Gerrit-Change-Id: I9f4724b4a5a064801591e9acf4f2fd1db006d082 </div>
<div style="display:none"> Gerrit-Change-Number: 9252 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Stefan Sperling <ssperling@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Stefan Sperling <ssperling@sysmocom.de> </div>
<div style="display:none"> Gerrit-Comment-Date: Wed, 23 May 2018 13:44:55 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-HasLabels: No </div>