Public bug reported:

Description:  qeth: don't clobber buffer on async TX completion

Symptom:      Failing transmissions on af_iucv HiperTransport socket.

Problem:      If qeth_qdio_output_handler() detects that a transmit
              requires async completion, it replaces the pending buffer's
              metadata object (qeth_qdio_out_buffer) so that this queue
              buffer can be re-used while the data is pending completion. 
              Later when the CQ indicates async completion of such a
              metadata object, qeth_qdio_cq_handler() tries to free any
              data associated with this object (since HW has now completed
              the transfer). By calling qeth_clear_output_buffer(), it
              erronously operates on the queue buffer that _previously_
              belonged to this transfer ... but which has been potentially
              re-used several times by now. This results in double-free's
              of the buffer's data, and failing transmits as the buffer
              descriptor is scrubbed in mid-air.

Solution:     First only scrub the queue buffer when it is prepared
              for re-use, and later obtain the data addresses from
              the async-completion notifier (ie. the AOB), instead
              of the queue buffer.

Reproduction: Heavy multi-connection workload on an af_iucv
              HiperTransport socket.

Upstream-ID:  ce28867fd20c23cd769e78b4d619c4755bf71a1c

Kernel 4.18

Will be introduced with kernel 4.18 in Cosmic.
But should also be applied to Bionic and Xenial

** Affects: linux (Ubuntu)
     Importance: Undecided
     Assignee: Skipper Bug Screeners (skipper-screen-team)
         Status: New


** Tags: architecture-s39064 bugnameltc-170402 severity-high 
targetmilestone-inin1804

** Tags added: architecture-s39064 bugnameltc-170402 severity-high
targetmilestone-inin1804

** Changed in: ubuntu
     Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team)

** Package changed: ubuntu => linux (Ubuntu)

-- 
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/1786057

Title:
  qeth: don't clobber buffer on async TX completion

Status in linux package in Ubuntu:
  New

Bug description:
  Description:  qeth: don't clobber buffer on async TX completion

  Symptom:      Failing transmissions on af_iucv HiperTransport socket.

  Problem:      If qeth_qdio_output_handler() detects that a transmit
                requires async completion, it replaces the pending buffer's
                metadata object (qeth_qdio_out_buffer) so that this queue
                buffer can be re-used while the data is pending completion. 
                Later when the CQ indicates async completion of such a
                metadata object, qeth_qdio_cq_handler() tries to free any
                data associated with this object (since HW has now completed
                the transfer). By calling qeth_clear_output_buffer(), it
                erronously operates on the queue buffer that _previously_
                belonged to this transfer ... but which has been potentially
                re-used several times by now. This results in double-free's
                of the buffer's data, and failing transmits as the buffer
                descriptor is scrubbed in mid-air.

  Solution:     First only scrub the queue buffer when it is prepared
                for re-use, and later obtain the data addresses from
                the async-completion notifier (ie. the AOB), instead
                of the queue buffer.

  Reproduction: Heavy multi-connection workload on an af_iucv
                HiperTransport socket.

  Upstream-ID:  ce28867fd20c23cd769e78b4d619c4755bf71a1c

  Kernel 4.18

  Will be introduced with kernel 4.18 in Cosmic.
  But should also be applied to Bionic and Xenial

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1786057/+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

Reply via email to