[U-Boot] [PATCH] net: make net_random_ethaddr() more random

Bin Meng bmeng.cn at gmail.com
Fri Aug 23 03:17:49 UTC 2019


On Fri, Aug 23, 2019 at 6:08 AM Michael Walle <michael at walle.cc> wrote:
>
> The net_random_ethaddr() tries to get some entropy from different
> startup times of a board. The seed is initialized with get_timer() which
> has only a granularity of milliseconds. We can do better if we use
> get_ticks() which returns the raw timer ticks. Using this we have a
> higher chance of getting different values at startup.
>
> Signed-off-by: Michael Walle <michael at walle.cc>
> ---
>  include/net.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/net.h b/include/net.h
> index a54d5eeac5..8215316bd3 100644
> --- a/include/net.h
> +++ b/include/net.h
> @@ -816,7 +816,7 @@ static inline int is_valid_ethaddr(const u8 *addr)
>  static inline void net_random_ethaddr(uchar *addr)
>  {
>         int i;
> -       unsigned int seed = get_timer(0);
> +       unsigned int seed = get_ticks() & (unsigned int)-1;

Shouldn't this be directly:

unsigned int seed = get_ticks();

>
>         for (i = 0; i < 6; i++)
>                 addr[i] = rand_r(&seed);

Regards,
Bin


More information about the U-Boot mailing list