• David Brownell's avatar
    USB: gadget: cdc-acm deadlock fix · e50ae572
    David Brownell authored
    This fixes a deadlock appearing with some USB peripheral drivers
    when running CDC ACM gadget code.
    
    The newish (2.6.27) CDC ACM event notification mechanism sends
    messages (IN to the host) which are short enough to fit in most
    FIFOs.  That means that with some peripheral controller drivers
    (evidently not the ones used to verify the notification code!!)
    the completion callback can be issued before queue() returns.
    
    The deadlock would come because the completion callback and the
    event-issuing code shared a spinlock.  Fix is trivial:  drop
    that lock while queueing the message.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    e50ae572
f_acm.c 21.9 KB