Adjusting tags according to comment #9. ** Tags removed: verification-needed-bionic ** Tags added: verification-done-bionic
-- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1801686 Title: [Ubuntu] qdio: reset old sbal_state flags Status in Ubuntu on IBM z Systems: Fix Committed Status in linux package in Ubuntu: Fix Released Status in linux source package in Xenial: Fix Released Status in linux source package in Bionic: Fix Committed Status in linux source package in Cosmic: Fix Released Status in linux source package in Disco: Fix Released Bug description: == SRU Justification == Description: qdio: reset old sbal_state flags Symptom: af_iucv socket using HiperSockets may stall. Problem: When allocating a new AOB fails, handle_outbound() is still capable of transmitting the selected buffer (just without async completion). But if a previous transfer on this queue slot used async completion, its sbal_state flags field is still set to QDIO_OUTBUF_STATE_FLAG_PENDING. So when the upper layer driver sees this stale flag, it expects an async completion that never happens. Solution: Unconditionally clear the buffer's flags field. == Fix == 64e03ff72623b8c2ea89ca3cb660094e019ed4ae ("s390/qdio: reset old sbal_state flags") == Regression Potential == Low, because: - s390x only - further limited to qeth driver (OSA Express networking) - changes are limited to two files and 6 lines - arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h - drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c - error was identified at IBM/customer, fix was created there and tested upfront - (changes are upstream in 4.20 (according to bug description, but in 4.19 according to 'git tag'), hence will make it automatically into 'disco') == Test Case == Test case / reproduction: Error inject and then simulate out-of-memory situation. __________ Description: qdio: reset old sbal_state flags Symptom: af_iucv socket using HiperSockets may stall. Problem: When allocating a new AOB fails, handle_outbound() is still capable of transmitting the selected buffer (just without async completion). But if a previous transfer on this queue slot used async completion, its sbal_state flags field is still set to QDIO_OUTBUF_STATE_FLAG_PENDING. So when the upper layer driver sees this stale flag, it expects an async completion that never happens. Solution: Unconditionally clear the buffer's flags field. Reproduction: Error inject, simulating out-of-memory. kernel 4.20 Upstream-ID: 64e03ff72623b8c2ea89ca3cb660094e019ed4ae Canonical , please provide this fix for all Releases in Service.... Ubuntu 18.10, 18.04 and 16.04 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1801686/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp