[CCID2]: Remove ugly BUG_ON
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Thu, 4 Oct 2007 21:41:26 +0000 (14:41 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:54:34 +0000 (16:54 -0700)
This removes an ugly BUG_ON which has been pointed out by Arnaldo.

Instead of freezing up the machine, a `critical' message is now issued
to the system log.

There is potential of doing this more gracefully (eg. there are a few
internal variables which could be updated despite the lack of memory),
but that requires more complicated changes to the algorithm; thus a
`FIXME' has been added.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ccids/ccid2.c

index 5c6b4f9..3e4fa6b 100644 (file)
@@ -294,12 +294,11 @@ static void ccid2_hc_tx_packet_sent(struct sock *sk, int more, unsigned int len)
        next = hctx->ccid2hctx_seqh->ccid2s_next;
        /* check if we need to alloc more space */
        if (next == hctx->ccid2hctx_seqt) {
-               int rc;
-
-               ccid2_pr_debug("allocating more space in history\n");
-               rc = ccid2_hc_tx_alloc_seq(hctx);
-               BUG_ON(rc); /* XXX what do we do? */
-
+               if (ccid2_hc_tx_alloc_seq(hctx)) {
+                       DCCP_CRIT("packet history - out of memory!");
+                       /* FIXME: find a more graceful way to bail out */
+                       return;
+               }
                next = hctx->ccid2hctx_seqh->ccid2s_next;
                BUG_ON(next == hctx->ccid2hctx_seqt);
        }