diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 13:58:06 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-05 13:58:06 -0400 |
| commit | f8ce1faf55955de62e0a12e330c6d9a526071f65 (patch) | |
| tree | a3b0ddd3f37e40d3ed0fd2cd433a2723403c8b97 | |
| parent | 24d0c2542b38963ae4d5171ecc0a2c1326c656bc (diff) | |
| parent | a53a11f35762ff1d5e268adedf2ab9ce313f871d (diff) | |
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull mudule updates from Rusty Russell:
"We get rid of the general module prefix confusion with a binary config
option, fix a remove/insert race which Never Happens, and (my
favorite) handle the case when we have too many modules for a single
commandline. Seriously, the kernel is full, please go away!"
* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
X.509: Support parse long form of length octets in Authority Key Identifier
module: don't unlink the module until we've removed all exposure.
kernel: kallsyms: memory override issue, need check destination buffer length
MODSIGN: do not send garbage to stderr when enabling modules signature
modpost: handle huge numbers of modules.
modpost: add -T option to read module names from file/stdin.
modpost: minor cleanup.
genksyms: pass symbol-prefix instead of arch
module: fix symbol versioning with symbol prefixes
CONFIG_SYMBOL_PREFIX: cleanup.
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | arch/Kconfig | 6 | ||||
| -rw-r--r-- | arch/blackfin/Kconfig | 5 | ||||
| -rw-r--r-- | arch/h8300/Kconfig | 5 | ||||
| -rw-r--r-- | arch/metag/Kconfig | 5 | ||||
| -rw-r--r-- | crypto/asymmetric_keys/x509_cert_parser.c | 55 | ||||
| -rw-r--r-- | drivers/mtd/chips/gen_probe.c | 8 | ||||
| -rw-r--r-- | include/asm-generic/unistd.h | 1 | ||||
| -rw-r--r-- | include/asm-generic/vmlinux.lds.h | 8 | ||||
| -rw-r--r-- | include/linux/export.h | 20 | ||||
| -rw-r--r-- | include/linux/kernel.h | 7 | ||||
| -rw-r--r-- | include/linux/linkage.h | 20 | ||||
| -rw-r--r-- | include/linux/module.h | 4 | ||||
| -rw-r--r-- | kernel/Makefile | 2 | ||||
| -rw-r--r-- | kernel/kallsyms.c | 26 | ||||
| -rw-r--r-- | kernel/modsign_certificate.S | 13 | ||||
| -rw-r--r-- | kernel/module.c | 18 | ||||
| -rw-r--r-- | scripts/Makefile.build | 3 | ||||
| -rw-r--r-- | scripts/Makefile.lib | 7 | ||||
| -rw-r--r-- | scripts/Makefile.modpost | 8 | ||||
| -rw-r--r-- | scripts/genksyms/genksyms.c | 18 | ||||
| -rw-r--r-- | scripts/link-vmlinux.sh | 5 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 94 |
23 files changed, 201 insertions, 139 deletions
| @@ -1399,7 +1399,7 @@ quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)) | |||
| 1399 | # Run depmod only if we have System.map and depmod is executable | 1399 | # Run depmod only if we have System.map and depmod is executable |
| 1400 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) | 1400 | quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) |
| 1401 | cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \ | 1401 | cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \ |
| 1402 | $(KERNELRELEASE) "$(patsubst "%",%,$(CONFIG_SYMBOL_PREFIX))" | 1402 | $(KERNELRELEASE) "$(patsubst y,_,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX))" |
| 1403 | 1403 | ||
| 1404 | # Create temporary dir for module support files | 1404 | # Create temporary dir for module support files |
| 1405 | # clean it up only when building all modules | 1405 | # clean it up only when building all modules |
diff --git a/arch/Kconfig b/arch/Kconfig index 99f0e17df429..dd0e8eb8042f 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
| @@ -381,6 +381,12 @@ config MODULES_USE_ELF_REL | |||
| 381 | Modules only use ELF REL relocations. Modules with ELF RELA | 381 | Modules only use ELF REL relocations. Modules with ELF RELA |
| 382 | relocations will give an error. | 382 | relocations will give an error. |
| 383 | 383 | ||
| 384 | config HAVE_UNDERSCORE_SYMBOL_PREFIX | ||
| 385 | bool | ||
| 386 | help | ||
| 387 | Some architectures generate an _ in front of C symbols; things like | ||
| 388 | module loading and assembly files need to know about this. | ||
| 389 | |||
| 384 | # | 390 | # |
| 385 | # ABI hall of shame | 391 | # ABI hall of shame |
| 386 | # | 392 | # |
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index c3f2e0bc644a..453ebe46b065 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
| @@ -1,7 +1,3 @@ | |||
| 1 | config SYMBOL_PREFIX | ||
| 2 | string | ||
| 3 | default "_" | ||
| 4 | |||
| 5 | config MMU | 1 | config MMU |
| 6 | def_bool n | 2 | def_bool n |
| 7 | 3 | ||
| @@ -33,6 +29,7 @@ config BLACKFIN | |||
| 33 | select ARCH_HAVE_CUSTOM_GPIO_H | 29 | select ARCH_HAVE_CUSTOM_GPIO_H |
| 34 | select ARCH_WANT_OPTIONAL_GPIOLIB | 30 | select ARCH_WANT_OPTIONAL_GPIOLIB |
| 35 | select HAVE_UID16 | 31 | select HAVE_UID16 |
| 32 | select HAVE_UNDERSCORE_SYMBOL_PREFIX | ||
| 36 | select VIRT_TO_BUS | 33 | select VIRT_TO_BUS |
| 37 | select ARCH_WANT_IPC_PARSE_VERSION | 34 | select ARCH_WANT_IPC_PARSE_VERSION |
| 38 | select HAVE_GENERIC_HARDIRQS | 35 | select HAVE_GENERIC_HARDIRQS |
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index 79250de1b12a..303e4f9a79d1 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig | |||
| @@ -12,10 +12,7 @@ config H8300 | |||
| 12 | select MODULES_USE_ELF_RELA | 12 | select MODULES_USE_ELF_RELA |
| 13 | select OLD_SIGSUSPEND3 | 13 | select OLD_SIGSUSPEND3 |
| 14 | select OLD_SIGACTION | 14 | select OLD_SIGACTION |
| 15 | 15 | select HAVE_UNDERSCORE_SYMBOL_PREFIX | |
| 16 | config SYMBOL_PREFIX | ||
| 17 | string | ||
| 18 | default "_" | ||
| 19 | 16 | ||
| 20 | config MMU | 17 | config MMU |
| 21 | bool | 18 | bool |
diff --git a/arch/metag/Kconfig b/arch/metag/Kconfig index b06b41861aac..6f16c1469327 100644 --- a/arch/metag/Kconfig +++ b/arch/metag/Kconfig | |||
| @@ -1,7 +1,3 @@ | |||
| 1 | config SYMBOL_PREFIX | ||
| 2 | string | ||
| 3 | default "_" | ||
| 4 | |||
| 5 | config METAG | 1 | config METAG |
| 6 | def_bool y | 2 | def_bool y |
| 7 | select EMBEDDED | 3 | select EMBEDDED |
| @@ -28,6 +24,7 @@ config METAG | |||
| 28 | select HAVE_OPROFILE | 24 | select HAVE_OPROFILE |
| 29 | select HAVE_PERF_EVENTS | 25 | select HAVE_PERF_EVENTS |
| 30 | select HAVE_SYSCALL_TRACEPOINTS | 26 | select HAVE_SYSCALL_TRACEPOINTS |
| 27 | select HAVE_UNDERSCORE_SYMBOL_PREFIX | ||
| 31 | select IRQ_DOMAIN | 28 | select IRQ_DOMAIN |
| 32 | select MODULES_USE_ELF_RELA | 29 | select MODULES_USE_ELF_RELA |
| 33 | select OF | 30 | select OF |
diff --git a/crypto/asymmetric_keys/x509_cert_parser.c b/crypto/asymmetric_keys/x509_cert_parser.c index 7fabc4c01993..facbf26bc6bb 100644 --- a/crypto/asymmetric_keys/x509_cert_parser.c +++ b/crypto/asymmetric_keys/x509_cert_parser.c | |||
| @@ -373,6 +373,9 @@ int rsa_extract_mpi(void *context, size_t hdrlen, | |||
| 373 | return 0; | 373 | return 0; |
| 374 | } | 374 | } |
| 375 | 375 | ||
| 376 | /* The keyIdentifier in AuthorityKeyIdentifier SEQUENCE is tag(CONT,PRIM,0) */ | ||
| 377 | #define SEQ_TAG_KEYID (ASN1_CONT << 6) | ||
| 378 | |||
| 376 | /* | 379 | /* |
| 377 | * Process certificate extensions that are used to qualify the certificate. | 380 | * Process certificate extensions that are used to qualify the certificate. |
| 378 | */ | 381 | */ |
| @@ -407,21 +410,57 @@ int x509_process_extension(void *context, size_t hdrlen, | |||
| 407 | } | 410 | } |
| 408 | 411 | ||
| 409 | if (ctx->last_oid == OID_authorityKeyIdentifier) { | 412 | if (ctx->last_oid == OID_authorityKeyIdentifier) { |
| 413 | size_t key_len; | ||
| 414 | |||
| 410 | /* Get hold of the CA key fingerprint */ | 415 | /* Get hold of the CA key fingerprint */ |
| 411 | if (vlen < 5) | 416 | if (vlen < 5) |
| 412 | return -EBADMSG; | 417 | return -EBADMSG; |
| 413 | if (v[0] != (ASN1_SEQ | (ASN1_CONS << 5)) || | 418 | |
| 414 | v[1] != vlen - 2 || | 419 | /* Authority Key Identifier must be a Constructed SEQUENCE */ |
| 415 | v[2] != (ASN1_CONT << 6) || | 420 | if (v[0] != (ASN1_SEQ | (ASN1_CONS << 5))) |
| 416 | v[3] != vlen - 4) | ||
| 417 | return -EBADMSG; | 421 | return -EBADMSG; |
| 418 | v += 4; | ||
| 419 | vlen -= 4; | ||
| 420 | 422 | ||
| 421 | f = kmalloc(vlen * 2 + 1, GFP_KERNEL); | 423 | /* Authority Key Identifier is not indefinite length */ |
| 424 | if (unlikely(vlen == ASN1_INDEFINITE_LENGTH)) | ||
| 425 | return -EBADMSG; | ||
| 426 | |||
| 427 | if (vlen < ASN1_INDEFINITE_LENGTH) { | ||
| 428 | /* Short Form length */ | ||
| 429 | if (v[1] != vlen - 2 || | ||
| 430 | v[2] != SEQ_TAG_KEYID || | ||
| 431 | v[3] > vlen - 4) | ||
| 432 | return -EBADMSG; | ||
| 433 | |||
| 434 | key_len = v[3]; | ||
| 435 | v += 4; | ||
| 436 | } else { | ||
| 437 | /* Long Form length */ | ||
| 438 | size_t seq_len = 0; | ||
| 439 | size_t sub = v[1] - ASN1_INDEFINITE_LENGTH; | ||
| 440 | |||
| 441 | if (sub > 2) | ||
| 442 | return -EBADMSG; | ||
| 443 | |||
| 444 | /* calculate the length from subsequent octets */ | ||
| 445 | v += 2; | ||
| 446 | for (i = 0; i < sub; i++) { | ||
| 447 | seq_len <<= 8; | ||
| 448 | seq_len |= v[i]; | ||
| 449 | } | ||
| 450 | |||
| 451 | if (seq_len != vlen - 2 - sub || | ||
| 452 | v[sub] != SEQ_TAG_KEYID || | ||
| < | |||
