Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 04:23:37 +0000 (20:23 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 20 Dec 2012 04:23:37 +0000 (20:23 -0800)
Pull random updates from Ted Ts'o:
 "A few /dev/random improvements for the v3.8 merge window."

* tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
  random: Mix cputime from each thread that exits to the pool
  random: prime last_data value per fips requirements
  random: fix debug format strings
  random: make it possible to enable debugging without rebuild

1  2 
kernel/posix-cpu-timers.c

index d73840271dcee993936b48cc9e7f7d5f66a5c546,f07827a4e281b5658d585aa2d786009dc2bd818c..a278cad1d5d6225a52e6bf00b2fd90f98bbe916e
@@@ -9,6 -9,7 +9,7 @@@
  #include <asm/uaccess.h>
  #include <linux/kernel_stat.h>
  #include <trace/events/timer.h>
+ #include <linux/random.h>
  
  /*
   * Called after updating RLIMIT_CPU to run cpu timer and update
@@@ -217,6 -218,30 +218,6 @@@ static int cpu_clock_sample(const clock
        return 0;
  }
  
 -void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times)
 -{
 -      struct signal_struct *sig = tsk->signal;
 -      struct task_struct *t;
 -
 -      times->utime = sig->utime;
 -      times->stime = sig->stime;
 -      times->sum_exec_runtime = sig->sum_sched_runtime;
 -
 -      rcu_read_lock();
 -      /* make sure we can trust tsk->thread_group list */
 -      if (!likely(pid_alive(tsk)))
 -              goto out;
 -
 -      t = tsk;
 -      do {
 -              times->utime += t->utime;
 -              times->stime += t->stime;
 -              times->sum_exec_runtime += task_sched_runtime(t);
 -      } while_each_thread(tsk, t);
 -out:
 -      rcu_read_unlock();
 -}
 -
  static void update_gt_cputime(struct task_cputime *a, struct task_cputime *b)
  {
        if (b->utime > a->utime)
@@@ -470,6 -495,8 +471,8 @@@ static void cleanup_timers(struct list_
   */
  void posix_cpu_timers_exit(struct task_struct *tsk)
  {
+       add_device_randomness((const void*) &tsk->se.sum_exec_runtime,
+                                               sizeof(unsigned long long));
        cleanup_timers(tsk->cpu_timers,
                       tsk->utime, tsk->stime, tsk->se.sum_exec_runtime);