mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	hwrng: add randomness to system from rng sources
When bringing a new RNG source online, it seems like it would make sense to use some of its bytes to make the system entropy pool more random, as done with all sorts of other devices that contain per-device or per-boot differences. Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Jason Cooper <jason@lakedaemon.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
		
							parent
							
								
									04d088cc0b
								
							
						
					
					
						commit
						d9e7972619
					
				
					 1 changed files with 7 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -41,6 +41,7 @@
 | 
			
		|||
#include <linux/miscdevice.h>
 | 
			
		||||
#include <linux/delay.h>
 | 
			
		||||
#include <linux/slab.h>
 | 
			
		||||
#include <linux/random.h>
 | 
			
		||||
#include <asm/uaccess.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -304,6 +305,8 @@ int hwrng_register(struct hwrng *rng)
 | 
			
		|||
{
 | 
			
		||||
	int err = -EINVAL;
 | 
			
		||||
	struct hwrng *old_rng, *tmp;
 | 
			
		||||
	unsigned char bytes[16];
 | 
			
		||||
	int bytes_read;
 | 
			
		||||
 | 
			
		||||
	if (rng->name == NULL ||
 | 
			
		||||
	    (rng->data_read == NULL && rng->read == NULL))
 | 
			
		||||
| 
						 | 
				
			
			@ -344,6 +347,10 @@ int hwrng_register(struct hwrng *rng)
 | 
			
		|||
	}
 | 
			
		||||
	INIT_LIST_HEAD(&rng->list);
 | 
			
		||||
	list_add_tail(&rng->list, &rng_list);
 | 
			
		||||
 | 
			
		||||
	bytes_read = rng_get_data(rng, bytes, sizeof(bytes), 1);
 | 
			
		||||
	if (bytes_read > 0)
 | 
			
		||||
		add_device_randomness(bytes, bytes_read);
 | 
			
		||||
out_unlock:
 | 
			
		||||
	mutex_unlock(&rng_mutex);
 | 
			
		||||
out:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue