• Julian Wiedmann's avatar
    s390/qeth: fix request-side race during cmd IO timeout · db71bbbd
    Julian Wiedmann authored
    Submitting a cmd IO request (usually on the WRITE device, but for IDX
    also on the READ device) is currently done with ccw_device_start()
    and a manual timeout in the caller.
    On timeout, the caller cleans up the related resources (eg. IO buffer).
    But 1) the IO might still be active and utilize those resources, and
        2) when the IO completes, qeth_irq() will attempt to clean up the
           same resources again.
    
    Instead of introducing additional resource locking, switch to
    ccw_device_start_timeout() to ensure IO termination after timeout, and
    let the IRQ handler alone deal with cleaning up after a request.
    
    This also removes a stray write->irq_pending reset from
    clear_ipacmd_list(). The routine doesn't terminate any pending IO on
    the WRITE device, so this should be handled properly via IO timeout
    in the IRQ handler.
    Signed-off-by: default avatarJulian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    db71bbbd
qeth_core_main.c 179 KB