[U-Boot] [PATCH v2] tools: gen_eth_addr: add getpid() to time(0) to avoid duplicated seed

Andreas Bießmann andreas.devel at googlemail.com
Wed Sep 16 12:29:43 CEST 2015


On 09/16/2015 12:21 PM, Josh Wu wrote:
> As 'time(0) | getpid()' will have a lot of duplicated value. It is not a
> expected behavior. We expect different value for the seed when when run

when when ... could be fixed when applied

> it in many times.
> 
> So this patch will left shift the getpid() and add to time(0). That
> avoid duplicated value.
> 
> Test command is like:
>   % RUN=0; while [ $RUN -lt 10000 ]; do
>   tools/gen_eth_addr; RUN=$(($RUN+1)); done | sort | uniq | wc -l
>   10000
> 
> This patch is incorporated with suggestions made by Wolfgang Denk and Andreas
> Bießmann. Thanks them a lot.
> 
> Signed-off-by: Josh Wu <josh.wu at atmel.com>

Acked-by: Andreas Bießmann <andreas.devel at googlemail.com>

> ---
> 
> Changes in v2:
> - left shift and add the getpid() value instead of removing it.
> 
>  tools/gen_eth_addr.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/gen_eth_addr.c b/tools/gen_eth_addr.c
> index bf9d935..5fa3e0c 100644
> --- a/tools/gen_eth_addr.c
> +++ b/tools/gen_eth_addr.c
> @@ -15,7 +15,7 @@ main(int argc, char *argv[])
>  {
>      unsigned long ethaddr_low, ethaddr_high;
>  
> -    srand(time(0) | getpid());
> +    srand(time(0) + (getpid() << 8));
>  
>      /*
>       * setting the 2nd LSB in the most significant byte of
> 



More information about the U-Boot mailing list