** 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs