From patchwork Tue Sep 27 21:30:16 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andi Kleen X-Patchwork-Id: 116670 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id CFFF6B6F7E for ; Wed, 28 Sep 2011 07:30:38 +1000 (EST) Received: (qmail 15401 invoked by alias); 27 Sep 2011 21:30:33 -0000 Received: (qmail 15391 invoked by uid 22791); 27 Sep 2011 21:30:31 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from one.firstfloor.org (HELO one.firstfloor.org) (213.235.205.2) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 27 Sep 2011 21:30:18 +0000 Received: by one.firstfloor.org (Postfix, from userid 503) id AA4031A9803F; Tue, 27 Sep 2011 23:30:17 +0200 (CEST) From: Andi Kleen To: gcc-patches@gcc.gnu.org Cc: hubicka@ucw.cz, Andi Kleen Subject: [PATCH 2/2] Use urandom to get random seed Date: Tue, 27 Sep 2011 23:30:16 +0200 Message-Id: <1317159016-19625-2-git-send-email-andi@firstfloor.org> In-Reply-To: <1317159016-19625-1-git-send-email-andi@firstfloor.org> References: <1317159016-19625-1-git-send-email-andi@firstfloor.org> Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org From: Andi Kleen When available use /dev/urandom to get the random seem. This will lower the probability of collisions. On other systems it will fallback to the old methods. Passes bootstrap + testsuite on x86_64. Ok? gcc/: * 2011-09-26 Andi Kleen * toplev.c (init_local_tick): Try reading random seed from /dev/urandom --- gcc/toplev.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/gcc/toplev.c b/gcc/toplev.c index e1a8b35..6298595 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -262,6 +262,12 @@ init_local_tick (void) { if (!flag_random_seed) { + /* Try urandom first. Time of day is too likely to collide. */ + + int fd = open("/dev/urandom", O_RDONLY); + read(fd, &random_seed, sizeof(random_seed)); + close(fd); + /* Get some more or less random data. */ #ifdef HAVE_GETTIMEOFDAY {