]> git.sur5r.net Git - u-boot/commitdiff
tools: gen_eth_addr: add getpid() to time(0) to avoid duplicated seed
authorJosh Wu <josh.wu@atmel.com>
Wed, 16 Sep 2015 10:21:04 +0000 (18:21 +0800)
committerTom Rini <trini@konsulko.com>
Mon, 28 Sep 2015 14:48:25 +0000 (10:48 -0400)
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
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@atmel.com>
Acked-by: Andreas Bießmann <andreas.devel@googlemail.com>
Acked-by: Wolfgang Denk <wd@denx.de>
Tested-by: Wolfgang Denk <wd@denx.de>
tools/gen_eth_addr.c

index bf9d935efdca205328de190f911d70c6ac594df2..5fa3e0cf5651b8595591c837ee518185e93b9290 100644 (file)
@@ -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