среда

[Bug 1801686] Re: [Ubuntu] qdio: reset old sbal_state flags

*Correction, I meant "Fix committed"

--
You received this bug notification because you are subscribed to linux
in Ubuntu.
Matching subscriptions: Bgg, Bmail, Nb
https://bugs.launchpad.net/bugs/1801686

Title:
[Ubuntu] qdio: reset old sbal_state flags

Status in Ubuntu on IBM z Systems:
Triaged
Status in linux package in Ubuntu:
New
Status in linux source package in Xenial:
Fix Committed
Status in linux source package in Bionic:
Fix Committed
Status in linux source package in Cosmic:
Fix Committed
Status in linux source package in Disco:
New

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

Комментариев нет:

Отправить комментарий