diff options
Diffstat (limited to 'drivers/char/random.c')
| -rw-r--r-- | drivers/char/random.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index 54ca8b23cde..4ec04a75473 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1260,10 +1260,15 @@ static int proc_do_uuid(ctl_table *table, int write,  	uuid = table->data;  	if (!uuid) {  		uuid = tmp_uuid; -		uuid[8] = 0; -	} -	if (uuid[8] == 0)  		generate_random_uuid(uuid); +	} else { +		static DEFINE_SPINLOCK(bootid_spinlock); + +		spin_lock(&bootid_spinlock); +		if (!uuid[8]) +			generate_random_uuid(uuid); +		spin_unlock(&bootid_spinlock); +	}  	sprintf(buf, "%pU", uuid);  |