mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
hwrng: use reference counts on each struct hwrng.
current_rng holds one reference, and we bump it every time we want to do a read from it. This means we only hold the rng_mutex to grab or drop a reference, so accessing /sys/devices/virtual/misc/hw_random/rng_current doesn't block on read of /dev/hwrng. Using a kref is overkill (we're always under the rng_mutex), but a standard pattern. This also solves the problem that the hwrng_fillfn thread was accessing current_rng without a lock, which could change (eg. to NULL) underneath it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Amos Kong <akong@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
committed by
Herbert Xu
parent
1dacb395d6
commit
3a2c0ba5ad
@@ -14,6 +14,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/kref.h>
|
||||
|
||||
/**
|
||||
* struct hwrng - Hardware Random Number Generator driver
|
||||
@@ -44,6 +45,7 @@ struct hwrng {
|
||||
|
||||
/* internal. */
|
||||
struct list_head list;
|
||||
struct kref ref;
|
||||
};
|
||||
|
||||
/** Register a new Hardware Random Number Generator driver. */
|
||||
|
||||
Reference in New Issue
Block a user