summarylogtreecommitdiffstats
path: root/0008-Remove-overflow-check-from-update_nextCid.patch
blob: 4c44e9d153cf640ab77d9af5241a65b3cd5f6966 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
From 12ac34bc93ca18dbb5f0f57744a70f1a072599b8 Mon Sep 17 00:00:00 2001
From: Benjamin Kaduk <kaduk@mit.edu>
Date: Thu, 14 Jan 2021 10:20:59 -0800
Subject: [PATCH 8/8] Remove overflow check from update_nextCid

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.

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>
(cherry picked from commit 43ef1f2a5d80aa1c3f5b4831ada8e776ac0c7d13)

Change-Id: I64fabe5229039f7af040902ed2e6f03dba7bc14d
---
 src/rx/rx.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/rx/rx.c b/src/rx/rx.c
index 5d5953120..c713fefd8 100644
--- a/src/rx/rx.c
+++ b/src/rx/rx.c
@@ -6644,14 +6644,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;
 }
 
-- 
2.30.0