• Doug Anderson's avatar
    mmc: dw_mmc: Don't try to enable the CD until we're sure we're not deferring · b793f658
    Doug Anderson authored
    If dw_mci_init_slot() returns that we got a probe deferral then it may
    leave slot->mmc as NULL.  That will cause dw_mci_enable_cd() to crash
    when it calls mmc_gpio_get_cd().
    
    Fix this by moving the call of dw_mci_enable_cd() until we're sure
    that we're good.  Note that if we have more than one slot and one
    defers (but the others don't) things won't work so well.  ...but
    that's not a new thing and everyone has already agreed that multislot
    support ought to be removed from dw_mmc eventually anyway since it is
    unused, untested, and you can see several bugs like this by inspecting
    the code.
    
    Fixes: bcafaf5470f0 ("mmc: dw_mmc: Only enable CD after setup and only if needed")
    Signed-off-by: default avatarDoug Anderson <dianders@chromium.org>
    Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    b793f658
dw_mmc.c 75.2 KB