• Nicholas Mc Guire's avatar
    drm/msm: fixup wait_for_completion_timeout handling · 9f68ef90
    Nicholas Mc Guire authored
    wait_for_completion_timeout return >= 0 but never negative so the check
    logic looks inconsistent. Further the return value of
    wait_for_completion_timeout was being passed up the call chain but the
    x call sites as drm_dp_i2c_do_msg()/drm_dp_dpcd_access() check for < 0
    thus timeout was being treated as success case.
    
    <snip> drivers/gpu/drm/drm_dp_helper.c:drm_dp_i2c_do_msg()
                    mutex_lock(&aux->hw_mutex);
                    ret = aux->transfer(aux, msg);
                    mutex_unlock(&aux->hw_mutex);
                    if (ret < 0) {
    <snip>
    logic in edp_aux_transfer() seems incorrect as it could return 0 (timeout)
    but checks of <= 0 to indicate error so the return probably should be
    -ETIMEDOUT in case wait_for_completion_timeout returns 0 (timeout
    occurred).
    Signed-off-by: default avatarNicholas Mc Guire <hofrat@osadl.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    9f68ef90
edp_aux.c 6.59 KB