Fallback to arc4rand() in the LinuxKPI when read_random() returns
zero. This can happen for virtual machines. MFC after: 1 week Sponsored by: Mellanox Technologies
This commit is contained in:
parent
c4263292fe
commit
d8571d3ea3
@ -1,5 +1,5 @@
|
||||
/*-
|
||||
* Copyright (c) 2015 Mellanox Technologies, Ltd. All rights reserved.
|
||||
* Copyright (c) 2015-2016 Mellanox Technologies, Ltd. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -102,7 +102,8 @@ eth_broadcast_addr(u8 *pa)
|
||||
static inline void
|
||||
random_ether_addr(u8 * dst)
|
||||
{
|
||||
read_random(dst, 6);
|
||||
if (read_random(dst, 6) == 0)
|
||||
arc4rand(dst, 6, 0);
|
||||
|
||||
dst[0] &= 0xfe;
|
||||
dst[0] |= 0x02;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Copyright (c) 2010 Isilon Systems, Inc.
|
||||
* Copyright (c) 2010 iX Systems, Inc.
|
||||
* Copyright (c) 2010 Panasas, Inc.
|
||||
* Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
|
||||
* Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -32,11 +32,13 @@
|
||||
#define _LINUX_RANDOM_H_
|
||||
|
||||
#include <sys/random.h>
|
||||
#include <sys/libkern.h>
|
||||
|
||||
static inline void
|
||||
get_random_bytes(void *buf, int nbytes)
|
||||
{
|
||||
read_random(buf, nbytes);
|
||||
if (read_random(buf, nbytes) == 0)
|
||||
arc4rand(buf, nbytes, 0);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_RANDOM_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user