<p><a href="https://gerrit.osmocom.org/10028">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/10028/1/ggsn/ggsn.c">File ggsn/ggsn.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/10028/1/ggsn/ggsn.c@514">Patch Set #1, Line 514:</a> <code style="font-family:monospace,monospace">  ipcp = (struct pco_ipcp_hdr *)pco_contains_proto(&pdp->pco_req, PCO_P_IPCP);</code></p><p><blockquote style="border-left: 1px solid #aaa; margin: 10px 0; padding: 0 10px;">So we increased size of the struct prepending bytes, but we still pass same pointer here and didn't  […]</blockquote></p><p style="white-space: pre-wrap; word-wrap: break-word;">The alignment problem occurs because of the + 3 addition to the pointer value in the old code. The pointer is 2-byte aligned before this addition, but is unaligned after + 3.</p><p style="white-space: pre-wrap; word-wrap: break-word;">The new code uses an aligned struct pointer only, and passes it on, whereas the old code manually created an unaligned struct pointer and passed it on.</p><p style="white-space: pre-wrap; word-wrap: break-word;">Accessing a struct through an unaligned pointer is a problem. Depending on the generated assembly and the platform, the consequences range from inefficiency to a fatal CPU trap exception.</p><p style="white-space: pre-wrap; word-wrap: break-word;">But accessing any element of the struct through an aligned struct pointer is OK, and the new code makes that happen.</p></li></ul></li></ul><p>To view, visit <a href="https://gerrit.osmocom.org/10028">change 10028</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/10028"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ggsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: comment </div>
<div style="display:none"> Gerrit-Change-Id: Ia75ee0f64e660f6ff6d81d808f9c460b7cac93d2 </div>
<div style="display:none"> Gerrit-Change-Number: 10028 </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: Neels Hofmeyr <nhofmeyr@sysmocom.de> </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: Thu, 19 Jul 2018 12:34:46 +0000 </div>
<div style="display:none"> Gerrit-HasComments: Yes </div>
<div style="display:none"> Gerrit-HasLabels: No </div>