• Sarah Sharp's avatar
    USB: xHCI: Fix another bug in link TRB activation change. · d1dc908a
    Sarah Sharp authored
    Commit 6c12db90 also seems to have
    introduced a bug that is triggered when the command ring is about to wrap.
    The inc_enq() function will not have moved the enqueue pointer past the
    link TRB.  It is supposed to be moved past the link TRB in prepare_ring(),
    which should be called before a TD is enqueued.  However, the
    queue_command() function never calls the prepare_ring() function because
    prepare_ring() is only supposed to be used for endpoint rings.  That means
    the enqueue pointer will not be moved past the link TRB, and will get
    overwritten.
    
    The fix is to make queue_command() call prepare_ring() with a fake
    endpoint status (set to running).  Then the enqueue pointer will get moved
    past the link TRB.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    d1dc908a
xhci-ring.c 80.1 KB