Remove condition (old_active_eps == 0) from xhci_check_tt_bw_table because the previous check of old_active_eps returns from the function if old_active_eps is not zero. Move the previous condition to the function beginning. Signed-off-by: Alexandr Ivanov <alexandr.sky@xxxxxxxxx> --- drivers/usb/host/xhci.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 27283654ca08..14aae87d6c8f 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -2329,16 +2329,18 @@ static int xhci_check_tt_bw_table(struct xhci_hcd *xhci, struct xhci_interval_bw_table *bw_table; struct xhci_tt_bw_info *tt_info; - /* Find the bandwidth table for the root port this TT is attached to. */ - bw_table = &xhci->rh_bw[virt_dev->real_port - 1].bw_table; - tt_info = virt_dev->tt_info; /* If this TT already had active endpoints, the bandwidth for this TT * has already been added. Removing all periodic endpoints (and thus * making the TT enactive) will only decrease the bandwidth used. */ if (old_active_eps) return 0; - if (old_active_eps == 0 && tt_info->active_eps != 0) { + + /* Find the bandwidth table for the root port this TT is attached to. */ + bw_table = &xhci->rh_bw[virt_dev->real_port - 1].bw_table; + tt_info = virt_dev->tt_info; + + if (tt_info->active_eps != 0) { if (bw_table->bw_used + TT_HS_OVERHEAD > HS_BW_LIMIT) return -ENOMEM; return 0; -- 2.31.1