Skip to content
  • Hans de Goede's avatar
    usb: ehci: poll_int_queue check real qtd, not the overlay · 415548d8
    Hans de Goede authored
    
    
    When we first start an int queue, the qh's overlay area is all zeros. This
    gets filled by the hc with the actual qtd values as soon as it advances
    the queue, but we may call poll_int_queue before then, in which case we
    would think the transfer has completed as the hc has not yet copied the
    qt_token to the overlay, so the active flag is not set.
    
    This fixes this by checking the actual qtd token, rather then the overlay.
    This also fixes a (theoretical) race where we see the completion in the
    overlay and free and re-use the qtd before the hc has completed writing back
    the overlay to the actual qtd.
    
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    415548d8