Commit 644008df authored by Theodore Ts'o's avatar Theodore Ts'o

random: initialize the last_time field in struct timer_rand_state

Since we initialize jiffies to wrap five minutes before boot (see
INITIAL_JIFFIES defined in include/linux/jiffies.h) it's important to
make sure the last_time field is initialized to INITIAL_JIFFIES.
Otherwise, the entropy estimator will overestimate the amount of
entropy resulting from the first call to add_timer_randomness(),
generally by about 8 bits.
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent ae9ecd92
...@@ -724,6 +724,8 @@ struct timer_rand_state { ...@@ -724,6 +724,8 @@ struct timer_rand_state {
unsigned dont_count_entropy:1; unsigned dont_count_entropy:1;
}; };
#define INIT_TIMER_RAND_STATE { INITIAL_JIFFIES, };
/* /*
* Add device- or boot-specific data to the input and nonblocking * Add device- or boot-specific data to the input and nonblocking
* pools to help initialize them to unique values. * pools to help initialize them to unique values.
...@@ -750,7 +752,7 @@ void add_device_randomness(const void *buf, unsigned int size) ...@@ -750,7 +752,7 @@ void add_device_randomness(const void *buf, unsigned int size)
} }
EXPORT_SYMBOL(add_device_randomness); EXPORT_SYMBOL(add_device_randomness);
static struct timer_rand_state input_timer_state; static struct timer_rand_state input_timer_state = INIT_TIMER_RAND_STATE;
/* /*
* This function adds entropy to the entropy "pool" by using timing * This function adds entropy to the entropy "pool" by using timing
...@@ -1267,8 +1269,10 @@ void rand_initialize_disk(struct gendisk *disk) ...@@ -1267,8 +1269,10 @@ void rand_initialize_disk(struct gendisk *disk)
* source. * source.
*/ */
state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL); state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL);
if (state) if (state) {
state->last_time = INITIAL_JIFFIES;
disk->random = state; disk->random = state;
}
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment