** Description changed: + == 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 + - 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' + - error was identified at IBM/customer, fix was created there and tested upfront + + == 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. + 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
** Description changed: == SRU Justification == Description: qdio: reset old sbal_state flags Symptom: - af_iucv socket using HiperSockets may stall. + af_iucv socket using HiperSockets may stall. Problem: - When allocating a new AOB fails, handle_outbound() is + 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. + 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 - - 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' + - 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 -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1801686 Title: [Ubuntu] qdio: reset old sbal_state flags To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1801686/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs