Commit 793734b5 authored by Gerrit Renker's avatar Gerrit Renker

dccp ccid-3: replace incorrect BUG_ON

This replaces an unjustified BUG_ON(), which could get triggered under normal
conditions: X_calc can be 0 when p > 0. X would in this case be set to the
minimum, s/t_mbi. Its replacement avoids t_ipi = 0 (unbounded sending rate).

Thanks to Jordi, Victor and Xavier who reported this.
Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.uk>
parent b4017c53
...@@ -98,6 +98,7 @@ static void ccid3_update_send_interval(struct ccid3_hc_tx_sock *hc) ...@@ -98,6 +98,7 @@ static void ccid3_update_send_interval(struct ccid3_hc_tx_sock *hc)
{ {
hc->tx_t_ipi = scaled_div32(((u64)hc->tx_s) << 6, hc->tx_x); hc->tx_t_ipi = scaled_div32(((u64)hc->tx_s) << 6, hc->tx_x);
DCCP_BUG_ON(hc->tx_t_ipi == 0);
ccid3_pr_debug("t_ipi=%u, s=%u, X=%u\n", hc->tx_t_ipi, ccid3_pr_debug("t_ipi=%u, s=%u, X=%u\n", hc->tx_t_ipi,
hc->tx_s, (unsigned)(hc->tx_x >> 6)); hc->tx_s, (unsigned)(hc->tx_x >> 6));
} }
...@@ -236,8 +237,6 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data) ...@@ -236,8 +237,6 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data)
* *
* Note that X_recv is scaled by 2^6 while X_calc is not * Note that X_recv is scaled by 2^6 while X_calc is not
*/ */
BUG_ON(hc->tx_p && !hc->tx_x_calc);
if (hc->tx_x_calc > (hc->tx_x_recv >> 5)) if (hc->tx_x_calc > (hc->tx_x_recv >> 5))
hc->tx_x_recv = hc->tx_x_recv =
max(hc->tx_x_recv / 2, max(hc->tx_x_recv / 2,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment