Merge tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 11 Mar 2017 17:08:47 +0000 (09:08 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 11 Mar 2017 17:08:47 +0000 (09:08 -0800)
Pull random updates from Ted Ts'o:
 "Change get_random_{int,log} to use the CRNG used by /dev/urandom and
  getrandom(2). It's faster and arguably more secure than cut-down MD5
  that we had been using.

  Also do some code cleanup"

* tag 'random_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random:
  random: move random_min_urandom_seed into CONFIG_SYSCTL ifdef block
  random: convert get_random_int/long into get_random_u32/u64
  random: use chacha20 for get_random_int/long
  random: fix comment for unused random_min_urandom_seed
  random: remove variable limit
  random: remove stale urandom_init_wait
  random: remove stale maybe_reseed_primary_crng

1  2 
init/main.c

diff --combined init/main.c
index eae2f15657c62c31f66353f4bd3c4af1e03451cf,09beb7fc6e8c7b0d413916c8d585e3e5aa4aaf5f..f9c9d994820327a3c23db348886fd535190b43e8
  #define DEBUG         /* Enable initcall_debug */
  
  #include <linux/types.h>
 +#include <linux/extable.h>
  #include <linux/module.h>
  #include <linux/proc_fs.h>
 +#include <linux/binfmts.h>
  #include <linux/kernel.h>
  #include <linux/syscalls.h>
  #include <linux/stackprotector.h>
@@@ -28,7 -26,6 +28,7 @@@
  #include <linux/bootmem.h>
  #include <linux/acpi.h>
  #include <linux/tty.h>
 +#include <linux/nmi.h>
  #include <linux/percpu.h>
  #include <linux/kmod.h>
  #include <linux/vmalloc.h>
@@@ -63,7 -60,6 +63,7 @@@
  #include <linux/device.h>
  #include <linux/kthread.h>
  #include <linux/sched.h>
 +#include <linux/sched/init.h>
  #include <linux/signal.h>
  #include <linux/idr.h>
  #include <linux/kgdb.h>
  #include <linux/shmem_fs.h>
  #include <linux/slab.h>
  #include <linux/perf_event.h>
 -#include <linux/file.h>
  #include <linux/ptrace.h>
  #include <linux/blkdev.h>
  #include <linux/elevator.h>
  #include <linux/sched_clock.h>
 +#include <linux/sched/task.h>
 +#include <linux/sched/task_stack.h>
  #include <linux/context_tracking.h>
  #include <linux/random.h>
  #include <linux/list.h>
@@@ -87,7 -82,6 +87,7 @@@
  #include <linux/proc_ns.h>
  #include <linux/io.h>
  #include <linux/cache.h>
 +#include <linux/rodata_test.h>
  
  #include <asm/io.h>
  #include <asm/bugs.h>
@@@ -559,7 -553,7 +559,7 @@@ asmlinkage __visible void __init start_
        if (WARN(!irqs_disabled(),
                 "Interrupts were enabled *very* early, fixing it\n"))
                local_irq_disable();
 -      idr_init_cache();
 +      radix_tree_init();
  
        /*
         * Allow workqueue creation and work item queueing/cancelling
        trace_init();
  
        context_tracking_init();
 -      radix_tree_init();
        /* init some links before init_ISA_irqs() */
        early_irq_init();
        init_IRQ();
        timekeeping_init();
        time_init();
        sched_clock_postinit();
 -      printk_nmi_init();
 +      printk_safe_init();
        perf_event_init();
        profile_init();
        call_function_init();
        numa_policy_init();
        if (late_time_init)
                late_time_init();
 -      sched_clock_init();
        calibrate_delay();
        pidmap_init();
        anon_vma_init();
        sfi_init_late();
  
        if (efi_enabled(EFI_RUNTIME_SERVICES)) {
 -              efi_late_init();
                efi_free_boot_services();
        }
  
@@@ -882,7 -879,6 +882,6 @@@ static void __init do_basic_setup(void
        do_ctors();
        usermodehelper_enable();
        do_initcalls();
-       random_int_secret_init();
  }
  
  static void __init do_pre_smp_initcalls(void)
@@@ -928,7 -924,7 +927,7 @@@ static int try_to_run_init_process(cons
  
  static noinline void __init kernel_init_freeable(void);
  
 -#if defined(CONFIG_DEBUG_RODATA) || defined(CONFIG_DEBUG_SET_MODULE_RONX)
 +#if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_STRICT_MODULE_RWX)
  bool rodata_enabled __ro_after_init = true;
  static int __init set_debug_rodata(char *str)
  {
  __setup("rodata=", set_debug_rodata);
  #endif
  
 -#ifdef CONFIG_DEBUG_RODATA
 +#ifdef CONFIG_STRICT_KERNEL_RWX
  static void mark_readonly(void)
  {
 -      if (rodata_enabled)
 +      if (rodata_enabled) {
                mark_rodata_ro();
 -      else
 +              rodata_test();
 +      } else
                pr_info("Kernel memory protection disabled.\n");
  }
  #else
@@@ -965,6 -960,8 +964,6 @@@ static int __ref kernel_init(void *unus
        system_state = SYSTEM_RUNNING;
        numa_default_policy();
  
 -      flush_delayed_fput();
 -
        rcu_end_inkernel_boot();
  
        if (ramdisk_execute_command) {