Merge branch 'modules-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Oct 2012 20:39:34 +0000 (13:39 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Oct 2012 20:39:34 +0000 (13:39 -0700)
Pull module signing support from Rusty Russell:
 "module signing is the highlight, but it's an all-over David Howells frenzy..."

Hmm "Magrathea: Glacier signing key". Somebody has been reading too much HHGTTG.

* 'modules-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (37 commits)
  X.509: Fix indefinite length element skip error handling
  X.509: Convert some printk calls to pr_devel
  asymmetric keys: fix printk format warning
  MODSIGN: Fix 32-bit overflow in X.509 certificate validity date checking
  MODSIGN: Make mrproper should remove generated files.
  MODSIGN: Use utf8 strings in signer's name in autogenerated X.509 certs
  MODSIGN: Use the same digest for the autogen key sig as for the module sig
  MODSIGN: Sign modules during the build process
  MODSIGN: Provide a script for generating a key ID from an X.509 cert
  MODSIGN: Implement module signature checking
  MODSIGN: Provide module signing public keys to the kernel
  MODSIGN: Automatically generate module signing keys if missing
  MODSIGN: Provide Kconfig options
  MODSIGN: Provide gitignore and make clean rules for extra files
  MODSIGN: Add FIPS policy
  module: signature checking hook
  X.509: Add a crypto key parser for binary (DER) X.509 certificates
  MPILIB: Provide a function to read raw data into an MPI
  X.509: Add an ASN.1 decoder
  X.509: Add simple ASN.1 grammar compiler
  ...

43 files changed:
1  2 
Documentation/kernel-parameters.txt
Makefile
arch/Kconfig
arch/alpha/Kconfig
arch/arm/Kconfig
arch/blackfin/Kconfig
arch/c6x/Kconfig
arch/cris/Kconfig
arch/cris/include/asm/Kbuild
arch/h8300/Kconfig
arch/h8300/include/asm/Kbuild
arch/ia64/Kconfig
arch/m32r/Kconfig
arch/m32r/include/asm/Kbuild
arch/m68k/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/mips/kernel/Makefile
arch/mn10300/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/s390/Kconfig
arch/score/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/sparc/include/asm/Kbuild
arch/tile/Kconfig
arch/unicore32/Kconfig
arch/x86/Kconfig
arch/x86/um/Kconfig
crypto/Kconfig
crypto/Makefile
fs/cifs/cifsacl.c
init/Kconfig
kernel/Makefile
lib/Makefile
net/dns_resolver/dns_key.c
net/rxrpc/ar-key.c
scripts/Makefile.modpost
security/keys/key.c
security/keys/keyctl.c
security/keys/keyring.c
security/keys/trusted.c

Simple merge
diff --cc Makefile
index 5d8e7f2583881bcbc8b549dc9e2d3d246498865a,e70ebfee9c80ca122f8b9582998e9f241ed66367..2d3daf7c1211574e96ed324a7fab223f72739a58
+++ b/Makefile
@@@ -996,8 -993,12 +996,11 @@@ CLEAN_DIRS  += $(MODVERDIR
  # Directories & files removed with 'make mrproper'
  MRPROPER_DIRS  += include/config usr/include include/generated          \
                    arch/*/include/generated
 -MRPROPER_FILES += .config .config.old .version .old_version             \
 -                  include/linux/version.h                               \
 +MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
-                 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
+                 Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
+                 signing_key.priv signing_key.x509 x509.genkey         \
+                 extra_certificates signing_key.x509.keyid             \
+                 signing_key.x509.signer
  
  # clean - Delete most, but leave enough to build external modules
  #
diff --cc arch/Kconfig
index a79a1ad8bb960a1d2aead851018fd2496c231d12,3450115c64373da128ba7be90de61b8fd7d8f160..366ec06a5185f0a59a7e5069357dbdb3da5a08c8
@@@ -300,26 -281,23 +300,45 @@@ config SECCOMP_FILTE
  
          See Documentation/prctl/seccomp_filter.txt for details.
  
 +config HAVE_RCU_USER_QS
 +      bool
 +      help
 +        Provide kernel entry/exit hooks necessary for userspace
 +        RCU extended quiescent state. Syscalls need to be wrapped inside
 +        rcu_user_exit()-rcu_user_enter() through the slow path using
 +        TIF_NOHZ flag. Exceptions handlers must be wrapped as well. Irqs
 +        are already protected inside rcu_irq_enter/rcu_irq_exit() but
 +        preemption or signal handling on irq exit still need to be protected.
 +
 +config HAVE_VIRT_CPU_ACCOUNTING
 +      bool
 +
 +config HAVE_IRQ_TIME_ACCOUNTING
 +      bool
 +      help
 +        Archs need to ensure they use a high enough resolution clock to
 +        support irq time accounting and then call enable_sched_clock_irqtime().
 +
 +config HAVE_ARCH_TRANSPARENT_HUGEPAGE
 +      bool
 +
+ config HAVE_MOD_ARCH_SPECIFIC
+       bool
+       help
+         The arch uses struct mod_arch_specific to store data.  Many arches
+         just need a simple module loader without arch specific data - those
+         should not enable this.
+ config MODULES_USE_ELF_RELA
+       bool
+       help
+         Modules only use ELF RELA relocations.  Modules with ELF REL
+         relocations will give an error.
+ config MODULES_USE_ELF_REL
+       bool
+       help
+         Modules only use ELF REL relocations.  Modules with ELF RELA
+         relocations will give an error.
  source "kernel/gcov/Kconfig"
index 7a08cfb80ee8319887ea4005e5eaa7da2f174c78,7e3710c0cce5a4c2ef51b8a889a061979a0b9b24..5dd7f5db24d45e6d98961ae53cc4478224068d8b
@@@ -20,8 -20,8 +20,10 @@@ config ALPH
        select GENERIC_CMOS_UPDATE
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
 +      select GENERIC_KERNEL_THREAD
 +      select GENERIC_KERNEL_EXECVE
+       select HAVE_MOD_ARCH_SPECIFIC
+       select MODULES_USE_ELF_RELA
        help
          The Alpha is a 64-bit general-purpose processor designed and
          marketed by the Digital Equipment Corporation of blessed memory,
index 261fdd085bb939bb0eb5929e455c71368669baf7,7a08b3a71c013a2b3cbf9681e637eefdb637ecdf..73067efd484530d4021a220fecce329b4752b3c0
@@@ -22,37 -16,41 +22,39 @@@ config AR
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
 -      select HAVE_KPROBES if !XIP_KERNEL
 -      select HAVE_KRETPROBES if (HAVE_KPROBES)
 -      select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
 -      select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
 +      select HAVE_BPF_JIT
 +      select HAVE_C_RECORDMCOUNT
 +      select HAVE_DEBUG_KMEMLEAK
 +      select HAVE_DMA_API_DEBUG
 +      select HAVE_DMA_ATTRS
 +      select HAVE_DMA_CONTIGUOUS if MMU
        select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
 +      select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
        select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
 -      select ARCH_BINFMT_ELF_RANDOMIZE_PIE
 +      select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
        select HAVE_GENERIC_DMA_COHERENT
 +      select HAVE_GENERIC_HARDIRQS
 +      select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
 +      select HAVE_IDE if PCI || ISA || PCMCIA
 +      select HAVE_IRQ_WORK
        select HAVE_KERNEL_GZIP
 -      select HAVE_KERNEL_LZO
        select HAVE_KERNEL_LZMA
 +      select HAVE_KERNEL_LZO
        select HAVE_KERNEL_XZ
 -      select HAVE_IRQ_WORK
 +      select HAVE_KPROBES if !XIP_KERNEL
 +      select HAVE_KRETPROBES if (HAVE_KPROBES)
 +      select HAVE_MEMBLOCK
 +      select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
        select HAVE_PERF_EVENTS
 -      select PERF_USE_VMALLOC
        select HAVE_REGS_AND_STACK_ACCESS_API
 -      select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
 -      select HAVE_C_RECORDMCOUNT
 -      select HAVE_GENERIC_HARDIRQS
 -      select HARDIRQS_SW_RESEND
 -      select GENERIC_IRQ_PROBE
 -      select GENERIC_IRQ_SHOW
 -      select ARCH_WANT_IPC_PARSE_VERSION
 -      select HARDIRQS_SW_RESEND
 -      select CPU_PM if (SUSPEND || CPU_IDLE)
 -      select GENERIC_PCI_IOMAP
 -      select HAVE_BPF_JIT
 -      select GENERIC_SMP_IDLE_THREAD
 +      select HAVE_SYSCALL_TRACEPOINTS
 +      select HAVE_UID16
        select KTIME_SCALAR
 -      select GENERIC_CLOCKEVENTS_BROADCAST if SMP
 -      select GENERIC_STRNCPY_FROM_USER
 -      select GENERIC_STRNLEN_USER
 -      select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
 +      select PERF_USE_VMALLOC
 +      select RTC_LIB
 +      select SYS_SUPPORTS_APM_EMULATION
+       select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
+       select MODULES_USE_ELF_REL
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
Simple merge
index 45268b50c0c88907e09a738a3d60f55c4ac2afe5,f6a3648f5ec3c7030a8c4294be4e3bee54a25b6c..aee1b569ee6e56c5aa8fa1ee609e91dcff6632f9
@@@ -17,7 -17,7 +17,8 @@@ config C6
        select OF
        select OF_EARLY_FLATTREE
        select GENERIC_CLOCKEVENTS
 +      select GENERIC_KERNEL_THREAD
+       select MODULES_USE_ELF_RELA
  
  config MMU
        def_bool n
Simple merge
index ff1bf7fcae8e116d86f23a7c05d825fd4ebc60b5,28b690de797116ca4f5deb292021b75e72924e82..6d43a951b5ec0b5b217ca8a51405cfa274be5ffb
@@@ -8,5 -8,4 +8,6 @@@ header-y += etraxgpio.
  header-y += rs485.h
  header-y += sync_serial.h
  
 +generic-y += clkdev.h
 +generic-y += exec.h
+ generic-y += module.h
Simple merge
index fccd81eddff1f6de89b07cc13c362809364c9507,871382d239fef60105b37f50424afe24ed6773e3..50bbf387b2f880d70a6783e8d7268eac764a4992
@@@ -1,4 -1,3 +1,5 @@@
  include include/asm-generic/Kbuild.asm
  
 -generic-y     += module.h
 +generic-y += clkdev.h
 +generic-y += exec.h
++generic-y += module.h
index 4c10e607c908cb59a444c8f7f185eeab323bfa1d,688146466d0dc54117e9aa809c713adcff3926c1..3279646120e3be5bdbc970ca5297b5fce30011ee
@@@ -39,7 -38,9 +39,9 @@@ config IA6
        select ARCH_TASK_STRUCT_ALLOCATOR
        select ARCH_THREAD_INFO_ALLOCATOR
        select ARCH_CLOCKSOURCE_DATA
 -      select GENERIC_TIME_VSYSCALL
 +      select GENERIC_TIME_VSYSCALL_OLD
+       select HAVE_MOD_ARCH_SPECIFIC
+       select MODULES_USE_ELF_RELA
        default y
        help
          The Itanium Processor Family is Intel's 64-bit successor to
Simple merge
index fccd81eddff1f6de89b07cc13c362809364c9507,871382d239fef60105b37f50424afe24ed6773e3..50bbf387b2f880d70a6783e8d7268eac764a4992
@@@ -1,4 -1,3 +1,5 @@@
  include include/asm-generic/Kbuild.asm
  
 -generic-y     += module.h
 +generic-y += clkdev.h
 +generic-y += exec.h
++generic-y += module.h
index 76fd6e2f71da1d4c7138f06dfca8a76633eb4336,0df07cee3faf5e1c0585f879a8e61e8d69a1d81b..e7c161433eae320adde6503722d35652f9c3956d
@@@ -15,7 -13,9 +15,10 @@@ config M68
        select FPU if MMU
        select ARCH_WANT_IPC_PARSE_VERSION
        select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE
 +      select GENERIC_KERNEL_THREAD
+       select HAVE_MOD_ARCH_SPECIFIC
+       select MODULES_USE_ELF_REL
+       select MODULES_USE_ELF_RELA
  
  config RWSEM_GENERIC_SPINLOCK
        bool
Simple merge
Simple merge
Simple merge
index ddbdc33471a830b152ec1f5cb3dcf9912d805fda,aa03f2e13385fe5083a50b17ae6f8c02e3ccb269..04669fac117b34b9e35bc73d10428efa45561d36
@@@ -8,7 -8,7 +8,8 @@@ config MN1030
        select HAVE_ARCH_KGDB
        select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
        select GENERIC_CLOCKEVENTS
 +      select GENERIC_KERNEL_THREAD
+       select MODULES_USE_ELF_RELA
  
  config AM33_2
        def_bool n
Simple merge
index 969f3d9ded91941cb4323052df4f465764259608,74f84781b484ea02755c7f4e078abd514ccfa43e..a902a5c1c76a337280fb8b6d42500e0e6f2caffb
@@@ -141,7 -139,8 +141,9 @@@ config PP
        select GENERIC_CLOCKEVENTS
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
 +      select GENERIC_KERNEL_THREAD
+       select HAVE_MOD_ARCH_SPECIFIC
+       select MODULES_USE_ELF_RELA
  
  config EARLY_PRINTK
        bool
index e5dac123618519051f776b78b74c869d2267d693,c76a052f60e29ddd9724d4555fe77d4148c013ef..3f3d9ca7a5b68fefdb333818fe6189d8c6cbf3ae
@@@ -135,7 -125,8 +135,9 @@@ config S39
        select GENERIC_CLOCKEVENTS
        select KTIME_SCALAR if 32BIT
        select HAVE_ARCH_SECCOMP_FILTER
 +      select GENERIC_KERNEL_THREAD
+       select HAVE_MOD_ARCH_SPECIFIC
+       select MODULES_USE_ELF_RELA
  
  config SCHED_OMIT_FRAME_POINTER
        def_bool y
Simple merge
diff --cc arch/sh/Kconfig
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 70071b19eb989b7926ac0f08c8f6d2431356c919,01726cbcc73bd23a7d318201247e2b1b8c909648..46c3bff3ced20e31c379bdde1c9a50c95206ff8e
@@@ -106,14 -97,11 +106,16 @@@ config X8
        select KTIME_SCALAR if X86_32
        select GENERIC_STRNCPY_FROM_USER
        select GENERIC_STRNLEN_USER
 +      select HAVE_RCU_USER_QS if X86_64
 +      select HAVE_IRQ_TIME_ACCOUNTING
 +      select GENERIC_KERNEL_THREAD
 +      select GENERIC_KERNEL_EXECVE
+       select MODULES_USE_ELF_REL if X86_32
+       select MODULES_USE_ELF_RELA if X86_64
  
  config INSTRUCTION_DECODER
 -      def_bool (KPROBES || PERF_EVENTS || UPROBES)
 +      def_bool y
 +      depends on KPROBES || PERF_EVENTS || UPROBES
  
  config OUTPUT_FORMAT
        string
index 9fa950df80e54ff6d6aa661e3c7e9c6bbe049d2b,a4b0c10c9d5d571673db4278f67c86eeb30cc094..07611759ce35b4cdcd298b402c22d39ada73e39a
@@@ -23,7 -21,7 +23,8 @@@ config 64BI
  config X86_32
        def_bool !64BIT
        select HAVE_AOUT
 +      select ARCH_WANT_IPC_PARSE_VERSION
+       select MODULES_USE_ELF_REL
  
  config X86_64
        def_bool 64BIT
diff --cc crypto/Kconfig
Simple merge
diff --cc crypto/Makefile
Simple merge
Simple merge
diff --cc init/Kconfig
index 89e4cf672dfe90e0d1fb75fb667d551dc7094f93,abc6e63f2fb81c715694a3361ba18086418d64b7..6fdd6e339326a079a2b6b5a3a1d2940b2bd81bd8
@@@ -1601,10 -1672,12 +1661,18 @@@ config PADAT
        depends on SMP
        bool
  
 +# Can be selected by architectures with broken toolchains
 +# that get confused by correct const<->read_only section
 +# mappings
 +config BROKEN_RODATA
 +      bool
 +
+ config ASN1
+       tristate
+       help
+         Build a simple ASN.1 grammar compiler that produces a bytecode output
+         that can be interpreted by the ASN.1 stream decoder and used to
+         inform it as to what tags are to be expected in a stream and what
+         functions to call on what tags.
  source "kernel/Kconfig.locks"
diff --cc kernel/Makefile
Simple merge
diff --cc lib/Makefile
index 3128e357e28649b58ddc05bf4d0802455a10f8fc,ca856b69a21d7010c263081e01ed01be21be6be1..821a16229111eba69f189ae9be683f02eeb70862
@@@ -140,11 -140,8 +140,13 @@@ $(foreach file, $(libfdt_files), 
        $(eval CFLAGS_$(file) = -I$(src)/../scripts/dtc/libfdt))
  lib-$(CONFIG_LIBFDT) += $(libfdt_files)
  
 +obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o
 +obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o
 +
 +interval_tree_test-objs := interval_tree_test_main.o interval_tree.o
 +
+ obj-$(CONFIG_ASN1) += asn1_decoder.o
  hostprogs-y   := gen_crc32table
  clean-files   := crc32table.h
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 3f163d0489ad2e8705a8f57c4751038b9d7d6f36,42036c7a08560d7f2b9d2cdf7197784a1cd1ec9f..e13fcf7636f7ffa0ff40d7cd60408645621dab1f
@@@ -903,9 -936,8 +904,9 @@@ static int trusted_instantiate(struct k
        char *datablob;
        int ret = 0;
        int key_cmd;
 +      size_t key_len;
  
-       if (datalen <= 0 || datalen > 32767 || !data)
+       if (datalen <= 0 || datalen > 32767 || !prep->data)
                return -EINVAL;
  
        datablob = kmalloc(datalen + 1, GFP_KERNEL);