<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>BugLink: <a href="http://bugs.launchpad.net/bugs/1801686">http://bugs.launchpad.net/bugs/1801686</a></div><div><br></div><div>== SRU Justification ==</div><div><br></div><div>Description: qdio: reset old sbal_state flags</div><div><br></div><div>Symptom:</div><div>   af_iucv socket using HiperSockets may stall.</div><div>Problem:</div><div>   When allocating a new AOB fails, handle_outbound() is</div><div>still capable of transmitting the selected buffer</div><div>(just without async completion).</div><div>But if a previous transfer on this queue slot used</div><div>async completion, its sbal_state flags field is still set</div><div>to QDIO_OUTBUF_STATE_FLAG_PENDING.</div><div>So when the upper layer driver sees this stale flag, it</div><div>expects an async completion that never happens.</div><div>Solution:</div><div>   Unconditionally clear the buffer's flags field.</div><div><br></div><div>== Fix ==</div><div><br></div><div>64e03ff72623b8c2ea89ca3cb660094e019ed4ae ("s390/qdio: reset old sbal_state flags")</div><div><br></div><div>== Regression Potential ==<br></div><div><br></div><div>Low, because:</div><div>- s390x only</div><div>- further limited to qeth driver (OSA Express networking)</div><div>- changes are limited to two files and 6 lines</div><div>   - arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h</div><div>   - drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c</div><div>- error was identified at IBM/customer, fix was created there and tested upfront</div><div>- (changes are upstream in 4.20 (according to bug description,</div><div>   but in 4.19 according to 'git tag'),</div><div>   hence will make it automatically into 'disco')</div><div><br></div><div>== Test Case ==</div><div><br></div><div>Test case / reproduction:</div><div>Error inject and then simulate out-of-memory situation.<br></div></div></div></div></div></div></div></div></div></div></div></div>