Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a58aa4ed authored by Greg Price's avatar Greg Price Committed by Theodore Ts'o
Browse files

random: forget lock in lockless accounting



The only mutable data accessed here is ->entropy_count, but since
10b3a32d ("random: fix accounting race condition") we use cmpxchg to
protect our accesses to ->entropy_count here.  Drop the use of the
lock.

Cc: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: default avatarGreg Price <price@mit.edu>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent ee1de406
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -970,9 +970,6 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
	int entropy_count, orig;
	int entropy_count, orig;
	size_t ibytes;
	size_t ibytes;


	/* Hold lock while accounting */
	spin_lock_irqsave(&r->lock, flags);

	BUG_ON(r->entropy_count > r->poolinfo->poolfracbits);
	BUG_ON(r->entropy_count > r->poolinfo->poolfracbits);


	/* Can we pull enough? */
	/* Can we pull enough? */
@@ -995,7 +992,6 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
		    < random_write_wakeup_thresh)
		    < random_write_wakeup_thresh)
			wakeup_write = 1;
			wakeup_write = 1;
	}
	}
	spin_unlock_irqrestore(&r->lock, flags);


	trace_debit_entropy(r->name, 8 * ibytes);
	trace_debit_entropy(r->name, 8 * ibytes);
	if (wakeup_write) {
	if (wakeup_write) {