xhci: Avoid BUG() in interrupt context
Change the BUGs in xhci_find_new_dequeue_state() to WARN_ONs, to avoid bringing down the box if one of them is hit This patch should be queued for stable kernels back to 2.6.31. Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Cc: stable@kernel.org
This commit is contained in:
parent
9ce4f80fb6
commit
68e41c5d03
|
@ -474,8 +474,11 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci,
|
||||||
state->new_deq_seg = find_trb_seg(cur_td->start_seg,
|
state->new_deq_seg = find_trb_seg(cur_td->start_seg,
|
||||||
dev->eps[ep_index].stopped_trb,
|
dev->eps[ep_index].stopped_trb,
|
||||||
&state->new_cycle_state);
|
&state->new_cycle_state);
|
||||||
if (!state->new_deq_seg)
|
if (!state->new_deq_seg) {
|
||||||
BUG();
|
WARN_ON(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Dig out the cycle state saved by the xHC during the stop ep cmd */
|
/* Dig out the cycle state saved by the xHC during the stop ep cmd */
|
||||||
xhci_dbg(xhci, "Finding endpoint context\n");
|
xhci_dbg(xhci, "Finding endpoint context\n");
|
||||||
ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index);
|
ep_ctx = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index);
|
||||||
|
@ -486,8 +489,10 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci,
|
||||||
state->new_deq_seg = find_trb_seg(state->new_deq_seg,
|
state->new_deq_seg = find_trb_seg(state->new_deq_seg,
|
||||||
state->new_deq_ptr,
|
state->new_deq_ptr,
|
||||||
&state->new_cycle_state);
|
&state->new_cycle_state);
|
||||||
if (!state->new_deq_seg)
|
if (!state->new_deq_seg) {
|
||||||
BUG();
|
WARN_ON(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
trb = &state->new_deq_ptr->generic;
|
trb = &state->new_deq_ptr->generic;
|
||||||
if ((trb->field[3] & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK) &&
|
if ((trb->field[3] & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK) &&
|
||||||
|
|
Loading…
Reference in New Issue