<div dir="ltr"><div dir="ltr"><div dir="ltr" class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div>BugLink: <a href="http://bugs.launchpad.net/bugs/1800639">http://bugs.launchpad.net/bugs/1800639</a></div><div><br></div><div>== SRU Justification ==</div><div><br></div><div>'Fix socket buffer (skb) leaks for HiperTransport'</div><div>Description: net/af_iucv: fix skb leaks for HiperTransport</div><div>Symptom: Memory leaks and/or double-freed network packets.</div><div>Problem: Inbound packets may have any combination of flag bits set in</div><div>their iucv header. Current code only handles certain</div><div>combinations, and ignores (ie. leaks) all packets with other flags.</div><div><br></div><div>On Transmit, current code is inconsistent about whether the error</div><div>paths need to free the skb. Depending on which error path is</div><div>taken, it may either get freed twice, or leak.</div><div>Solution: On receive, drop any skb with an unexpected combination of iucv</div><div>Header flags.</div><div>On transmit, be consistent in all error paths about free'ing the skb.</div><div><br></div><div>== Fix ==</div><div><br></div><div>2224409 ("net/af_iucv: drop inbound packets with invalid flags")</div><div>b2f5439 ("net/af_iucv: fix skb handling on HiperTransport xmit error")</div><div><br></div><div>== Regression Potential ==<br></div><div><br></div><div>Low, because:</div><div>- IUCV functionality is very special to s390x<br>- and even more special because it's only supported in z/VM environments</div><div>  (z/VM hypervisor to guest or guest to guest communications)</div><div>- So everything is s390x specific.</div><div>- Patch is limited to this single file: /net/iucv/af_iucv.c</div><div>- This was identified as problem situation by IBM</div><div>  then fixed, the fix tested and now needs to rolled out as preventive fix.</div><div><br></div><div>== Test Case ==</div><div><br></div><div>Set IUCV communication on an Ubuntu s390x system that runs as z/VM guest:</div><div><a href="https://www.ibm.com/support/knowledgecenter/en/linuxonibm/com.ibm.linux.z.ludd/ludd_r_afiucv_setup.html">https://www.ibm.com/support/knowledgecenter/en/linuxonibm/com.ibm.linux.z.ludd/ludd_r_afiucv_setup.html</a></div><div>Provoke an error situation.</div><div>This is btw. hard to do, because the 'Inter-User Communication Vehicle" (IUCV) is a virtual z/VM internal</div><div>network that does not use any real media.</div><div>To check for regressions one can use a shell over an ssh connection using an IUCV interface</div><div>or use an application that utilizes AF_IUCV sockets (like ICC).</div></div><div><br></div></div></div></div></div></div></div></div></div></div></div></div>