Skip to contentSkip to conversation

hash: document rte_jhash() boundary behavior

PATCH Applied Chas Williams 4 participants 4 messages Sep 18, 2017 – Oct 5, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 hash: document rte_jhash() boundary behavior

From: Chas Williams <[email protected]>

Due to the uint32_t accesses in the hash computation, keys that aren't aligned to a uint32_t boundary or multiples of uint32_t in length, may see accesses beyond the end of the key. This may cross a page boundary.

---
 lib/librte_hash/rte_jhash.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
lib/librte_hash/rte_jhash.h +4 -1
index 207478c..3eca138 100644
@@ -290,7 +290,10 @@ rte_jhash_32b_2hashes(const uint32_t *k, uint32_t length, uint32_t *pc, uint32_t
 /**
  * The most generic version, hashes an arbitrary sequence
  * of bytes.  No alignment or length assumptions are made about
- * the input key.
+ * the input key.  For keys not aligned to four byte boundaries
+ * or a multiple of four bytes in length, the memory region
+ * just after may be read (but not used in the computation).
+ * This may cross a page boundary.
  *
  * @param key
  *   Key to calculate hash of.
Signature · 1 line
2.9.5
Acked-by on v1 1/1
#1 lore raw
Quoted 24 lines · Chas Williams

From: Chas Williams <[email protected]>

Due to the uint32_t accesses in the hash computation, keys that aren't
aligned to a uint32_t boundary or multiples of uint32_t in length, may
see accesses beyond the end of the key.  This may cross a page boundary.

---
 lib/librte_hash/rte_jhash.h | 5 ++++-

 1 file changed, 4 insertions(+), 1 deletion(-)
lib/librte_hash/rte_jhash.h +0 -0
index 207478c..3eca138 100644
@@ -290,7 +290,10 @@ rte_jhash_32b_2hashes(const uint32_t *k,

uint32_t length, uint32_t *pc, uint32_t
 /**
  * The most generic version, hashes an arbitrary sequence
  * of bytes.  No alignment or length assumptions are made about

Quoted 8 lines

- * the input key.
+ * the input key.  For keys not aligned to four byte boundaries
+ * or a multiple of four bytes in length, the memory region
+ * just after may be read (but not used in the computation).
+ * This may cross a page boundary.
  *
  * @param key
  *   Key to calculate hash of.

Signature · 2 lines
Kind regards,
Luca Boccassi
Acked-by on v1 1/1
#2 lore raw
In reply to Chas Williams
Quoted 10 lines

-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Chas Williams
Sent: Monday, September 18, 2017 8:48 PM
To: [email protected]
Cc: Richardson, Bruce <[email protected]>; De Lara Guarch, Pablo <[email protected]>; Chas Williams <[email protected]>
Subject: [dpdk-dev] [PATCH] hash: document rte_jhash() boundary behavior

Quoted 7 lines

From: Chas Williams <[email protected]>

Due to the uint32_t accesses in the hash computation, keys that aren't aligned to a uint32_t boundary or multiples of uint32_t in length, may see accesses beyond the end of the key. This may cross a page boundary.