Page MenuHomeFreeBSD

D32725.diff
No OneTemporary

D32725.diff

Index: sys/dev/random/random_harvestq.c
===================================================================
--- sys/dev/random/random_harvestq.c
+++ sys/dev/random/random_harvestq.c
@@ -523,6 +523,12 @@
u_int ring_in;
KASSERT(origin >= RANDOM_START && origin < ENTROPYSOURCE, ("%s: origin %d invalid\n", __func__, origin));
+
+ /* Do a very dirty check to avoid taking lock if not necessary */
+ if (((harvest_context.hc_entropy_ring.in + 1) % RANDOM_RING_MAX)
+ == harvest_context.hc_entropy_ring.out)
+ return;
+
RANDOM_HARVEST_LOCK();
ring_in = (harvest_context.hc_entropy_ring.in + 1)%RANDOM_RING_MAX;
if (ring_in != harvest_context.hc_entropy_ring.out) {

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 26, 1:07 AM (13 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27986156
Default Alt Text
D32725.diff (677 B)

Event Timeline