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.
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 STATE_FLAG_ PENDING.
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_
So when the upper layer driver sees this stale flag, it
Solution: Unconditionally clear the buffer's flags field.
Reproduction: Error inject, simulating out-of-memory.
kernel 4.20 2ea89ca3cb66009 4e019ed4ae
Upstream-ID: 64e03ff72623b8c
Canonical , please provide this fix for all Releases in Service....
Ubuntu 18.10, 18.04 and 16.04