Remove overflow check from update_nextCid 96/14496/3
authorBenjamin Kaduk <kaduk@mit.edu>
Thu, 14 Jan 2021 18:20:59 +0000 (10:20 -0800)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 14 Jan 2021 19:50:47 +0000 (14:50 -0500)
The rx_nextCid global has been an unsigned type since
http://gerrit.openafs.org/11106 (which was actually merged before
the refactoring of overflow check to avoid signed integer overflow)
and thus there is no need to avoid signed overflow.  The per-connection
cid has been unsigned since the IBM import.

The natural unsigned behavior on overflow of wrapping is the desired
behvaior here, so just remove the extra logic and always increment.

Change-Id: I2d9fd24082b762eb871199da3ac1cc0983764585
Reviewed-on: https://gerrit.openafs.org/14496
Reviewed-by: Jeffrey Hutzelman <jhutz@cmu.edu>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>

src/rx/rx.c

index db1f23a..565cca4 100644 (file)
@@ -6788,14 +6788,12 @@ rxi_CancelGrowMTUEvent(struct rx_call *call)
 }
 
 /*
- * Increment the counter for the next connection ID, handling overflow.
+ * Increment the counter for the next connection ID.
+ * Wrapping on unsigned integer overflow is the intended behavior.
  */
 static void
 update_nextCid(void)
 {
-    /* Overflow is technically undefined behavior; avoid it. */
-    if (rx_nextCid > MAX_AFS_INT32 - (1 << RX_CIDSHIFT))
-       rx_nextCid = 0;
     rx_nextCid += 1 << RX_CIDSHIFT;
 }