• Iago Abal's avatar
    HSI: cmt_speech: Fix double spin_lock · 3c13ab1d
    Iago Abal authored
    Release &hi->lock before calling `cs_hsi_control_read_error' to avoid deadlock.
    
    The bug was found using EBA (https://github.com/models-team/eba), which reported
    the following:
    
        Double lock
        first at drivers/hsi/clients/cmt_speech.c:443
        second at drivers/hsi/clients/cmt_speech.c:447
        In cs_hsi_read_on_control_complete defined at drivers/hsi/clients/cmt_speech.c:438:
        (!) drivers/hsi/clients/cmt_speech.c:443: spin_lock(& hi->lock);
        (?) drivers/hsi/clients/cmt_speech.c:445: msg->status == 4 -> true
        (!) drivers/hsi/clients/cmt_speech.c:447: cs_hsi_control_read_error(hi, msg);
            (!) drivers/hsi/clients/cmt_speech.c:407: __cs_hsi_error_pre(hi, msg, "control read",
                           & hi->control_state);
                (!) drivers/hsi/clients/cmt_speech.c:382: spin_lock(& hi->lock);
    Signed-off-by: default avatarIago Abal <mail@iagoabal.eu>
    Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
    3c13ab1d
cmt_speech.c 34 KB