dev/random: use our roundup() macro instead of re-implementing it.
While here also use howmany() macro from sys/param.h No functional change. Reviewed by: markm (roundup replacement part) Approved by: so
This commit is contained in:
parent
820a9567ed
commit
7b250b1ec9
@ -324,7 +324,7 @@ random_fortuna_genrandom(uint8_t *buf, u_int bytecount)
|
|||||||
* - K = GenerateBlocks(2)
|
* - K = GenerateBlocks(2)
|
||||||
*/
|
*/
|
||||||
KASSERT((bytecount <= RANDOM_FORTUNA_MAX_READ), ("invalid single read request to Fortuna of %d bytes", bytecount));
|
KASSERT((bytecount <= RANDOM_FORTUNA_MAX_READ), ("invalid single read request to Fortuna of %d bytes", bytecount));
|
||||||
blockcount = (bytecount + RANDOM_BLOCKSIZE - 1)/RANDOM_BLOCKSIZE;
|
blockcount = howmany(bytecount, RANDOM_BLOCKSIZE);
|
||||||
random_fortuna_genblocks(buf, blockcount);
|
random_fortuna_genblocks(buf, blockcount);
|
||||||
random_fortuna_genblocks(temp, RANDOM_KEYS_PER_BLOCK);
|
random_fortuna_genblocks(temp, RANDOM_KEYS_PER_BLOCK);
|
||||||
randomdev_encrypt_init(&fortuna_state.fs_key, temp);
|
randomdev_encrypt_init(&fortuna_state.fs_key, temp);
|
||||||
|
@ -68,9 +68,6 @@ static u_int READ_RANDOM(void *, u_int);
|
|||||||
#define READ_RANDOM read_random
|
#define READ_RANDOM read_random
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Return the largest number >= x that is a multiple of m */
|
|
||||||
#define CEIL_TO_MULTIPLE(x, m) ((((x) + (m) - 1)/(m))*(m))
|
|
||||||
|
|
||||||
static d_read_t randomdev_read;
|
static d_read_t randomdev_read;
|
||||||
static d_write_t randomdev_write;
|
static d_write_t randomdev_write;
|
||||||
static d_poll_t randomdev_poll;
|
static d_poll_t randomdev_poll;
|
||||||
@ -164,7 +161,7 @@ READ_RANDOM_UIO(struct uio *uio, bool nonblock)
|
|||||||
* which is what the underlying generator is expecting.
|
* which is what the underlying generator is expecting.
|
||||||
* See the random_buf size requirements in the Yarrow/Fortuna code.
|
* See the random_buf size requirements in the Yarrow/Fortuna code.
|
||||||
*/
|
*/
|
||||||
read_len = CEIL_TO_MULTIPLE(read_len, RANDOM_BLOCKSIZE);
|
read_len = roundup(read_len, RANDOM_BLOCKSIZE);
|
||||||
/* Work in chunks page-sized or less */
|
/* Work in chunks page-sized or less */
|
||||||
read_len = MIN(read_len, PAGE_SIZE);
|
read_len = MIN(read_len, PAGE_SIZE);
|
||||||
p_random_alg_context->ra_read(random_buf, read_len);
|
p_random_alg_context->ra_read(random_buf, read_len);
|
||||||
@ -204,7 +201,7 @@ READ_RANDOM(void *random_buf, u_int len)
|
|||||||
* Round up the read length to a crypto block size multiple,
|
* Round up the read length to a crypto block size multiple,
|
||||||
* which is what the underlying generator is expecting.
|
* which is what the underlying generator is expecting.
|
||||||
*/
|
*/
|
||||||
read_len = CEIL_TO_MULTIPLE(len, RANDOM_BLOCKSIZE);
|
read_len = roundup(len, RANDOM_BLOCKSIZE);
|
||||||
p_random_alg_context->ra_read(local_buf, read_len);
|
p_random_alg_context->ra_read(local_buf, read_len);
|
||||||
memcpy(random_buf, local_buf, len);
|
memcpy(random_buf, local_buf, len);
|
||||||
}
|
}
|
||||||
|
@ -374,7 +374,7 @@ random_yarrow_read(uint8_t *buf, u_int bytecount)
|
|||||||
|
|
||||||
KASSERT((bytecount % RANDOM_BLOCKSIZE) == 0, ("%s(): bytecount (= %d) must be a multiple of %d", __func__, bytecount, RANDOM_BLOCKSIZE ));
|
KASSERT((bytecount % RANDOM_BLOCKSIZE) == 0, ("%s(): bytecount (= %d) must be a multiple of %d", __func__, bytecount, RANDOM_BLOCKSIZE ));
|
||||||
RANDOM_RESEED_LOCK();
|
RANDOM_RESEED_LOCK();
|
||||||
blockcount = (bytecount + RANDOM_BLOCKSIZE - 1)/RANDOM_BLOCKSIZE;
|
blockcount = howmany(bytecount, RANDOM_BLOCKSIZE);
|
||||||
for (i = 0; i < blockcount; i++) {
|
for (i = 0; i < blockcount; i++) {
|
||||||
if (yarrow_state.ys_outputblocks++ >= yarrow_state.ys_gengateinterval) {
|
if (yarrow_state.ys_outputblocks++ >= yarrow_state.ys_gengateinterval) {
|
||||||
random_yarrow_generator_gate();
|
random_yarrow_generator_gate();
|
||||||
|
Loading…
Reference in New Issue
Block a user