summarylogtreecommitdiffstats
path: root/0008-Remove-overflow-check-from-update_nextCid.patch
diff options
context:
space:
mode:
authorMichael Lass2021-01-14 21:15:26 +0100
committerMichael Lass2021-01-14 21:15:26 +0100
commit72f805106b205c02bb34622f75bdd69406053026 (patch)
treef0548f282ce168ddd4c3137d1a140f50189be67c /0008-Remove-overflow-check-from-update_nextCid.patch
parent87324038e50498205be512e940f29664a208d189 (diff)
downloadaur-72f805106b205c02bb34622f75bdd69406053026.tar.gz
Update patches for RX sequence ID bug
Diffstat (limited to '0008-Remove-overflow-check-from-update_nextCid.patch')
-rw-r--r--0008-Remove-overflow-check-from-update_nextCid.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/0008-Remove-overflow-check-from-update_nextCid.patch b/0008-Remove-overflow-check-from-update_nextCid.patch
new file mode 100644
index 000000000000..4c44e9d153cf
--- /dev/null
+++ b/0008-Remove-overflow-check-from-update_nextCid.patch
@@ -0,0 +1,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
+