Page MenuHomeFreeBSD

D32725.id97653.diff
No OneTemporary

D32725.id97653.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
Tue, Apr 21, 11:17 AM (14 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31775512
Default Alt Text
D32725.id97653.diff (677 B)

Event Timeline