• Adrian Hunter's avatar
    mmc: block: Fix request completion in the CQE timeout path · c077dc5e
    Adrian Hunter authored
    First, it should be noted that the CQE timeout (60 seconds) is substantial
    so a CQE request that times out is really stuck, and the race between
    timeout and completion is extremely unlikely. Nevertheless this patch
    fixes an issue with it.
    
    Commit ad73d6fe ("mmc: complete requests from ->timeout")
    preserved the existing functionality, to complete the request.
    However that had only been necessary because the block layer
    timeout handler had been marking the request to prevent it from being
    completed normally. That restriction was removed at the same time, the
    result being that a request that has gone will have been completed anyway.
    That is, the completion was unnecessary.
    
    At the time, the unnecessary completion was harmless because the block
    layer would ignore it, although that changed in kernel v5.0.
    
    Note for stable, this patch will not apply cleanly without patch "mmc:
    core: Fix recursive locking issue in CQE recovery path"
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Fixes: ad73d6fe ("mmc: complete requests from ->timeout")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200508062227.23144-1-adrian.hunter@intel.comSigned-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    c077dc5e
queue.c 13.2 KB