• Hans Verkuil's avatar
    media: cec-adap.c: fix is_configuring state · 59267fc3
    Hans Verkuil authored
    If an adapter is trying to claim a free logical address then it is
    in the 'is_configuring' state. If during that process the cable is
    disconnected (HPD goes low, which in turn invalidates the physical
    address), then cec_adap_unconfigure() is called, and that set the
    is_configuring boolean to false, even though the thread that's
    trying to claim an LA is still running.
    
    Don't touch the is_configuring bool in cec_adap_unconfigure(), it
    will eventually be cleared by the thread. By making that change
    the cec_config_log_addr() function also had to change: it was
    aborting if is_configuring became false (since that is what
    cec_adap_unconfigure() did), but that no longer works. Instead
    check if the physical address is invalid. That is a much
    more appropriate check anyway.
    
    This fixes a bug where the the adapter could be disabled even
    though the device was still configuring. This could cause POLL
    transmits to time out.
    Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
    59267fc3
cec-adap.c 65.2 KB