diff options
| author | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-04-14 11:00:36 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-04-14 11:00:36 -0400 |
| commit | 277a163c83d7ba93fba1e8980d29a9f8bfcfba6c (patch) | |
| tree | ccfd357d152292958957b6b8a993892e7a8cc95f /kernel/module.c | |
| parent | a83b93a7480441a47856dc9104bea970e84cda87 (diff) | |
| parent | c9eaa447e77efe77b7fa4c953bd62de8297fd6c5 (diff) | |
Merge tag 'v3.15-rc1' into patchwork
Linux 3.15-rc1
* tag 'v3.15-rc1': (12180 commits)
Linux 3.15-rc1
mm: Initialize error in shmem_file_aio_read()
cifs: Use min_t() when comparing "size_t" and "unsigned long"
sym53c8xx_2: Set DID_REQUEUE return code when aborting squeue
powerpc: Don't try to set LPCR unless we're in hypervisor mode
futex: update documentation for ordering guarantees
ceph: fix pr_fmt() redefinition
vti: don't allow to add the same tunnel twice
gre: don't allow to add the same tunnel twice
drivers: net: xen-netfront: fix array initialization bug
missing bits of "splice: fix racy pipe->buffers uses"
cifs: fix the race in cifs_writev()
ceph_sync_{,direct_}write: fix an oops on ceph_osdc_new_request() failure
pktgen: be friendly to LLTX devices
r8152: check RTL8152_UNPLUG
net: sun4i-emac: add promiscuous support
net/apne: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
blackfin: cleanup board files
bf609: clock: drop unused clock bit set/clear functions
Blackfin: bf537: rename "CONFIG_ADT75"
...
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/kernel/module.c b/kernel/module.c index d24fcf29cb64..11869408f79b 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
| @@ -640,7 +640,7 @@ static int module_unload_init(struct module *mod) | |||
| 640 | INIT_LIST_HEAD(&mod->target_list); | 640 | INIT_LIST_HEAD(&mod->target_list); |
| 641 | 641 | ||
| 642 | /* Hold reference count during initialization. */ | 642 | /* Hold reference count during initialization. */ |
| 643 | __this_cpu_write(mod->refptr->incs, 1); | 643 | raw_cpu_write(mod->refptr->incs, 1); |
| 644 | 644 | ||
| 645 | return 0; | 645 | return 0; |
| 646 | } | 646 | } |
| @@ -1013,9 +1013,11 @@ static size_t module_flags_taint(struct module *mod, char *buf) | |||
| 1013 | buf[l++] = 'F'; | 1013 | buf[l++] = 'F'; |
| 1014 | if (mod->taints & (1 << TAINT_CRAP)) | 1014 | if (mod->taints & (1 << TAINT_CRAP)) |
| 1015 | buf[l++] = 'C'; | 1015 | buf[l++] = 'C'; |
| 1016 | if (mod->taints & (1 << TAINT_UNSIGNED_MODULE)) | ||
| 1017 | buf[l++] = 'E'; | ||
| 1016 | /* | 1018 | /* |
| 1017 | * TAINT_FORCED_RMMOD: could be added. | 1019 | * TAINT_FORCED_RMMOD: could be added. |
| 1018 | * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't | 1020 | * TAINT_CPU_OUT_OF_SPEC, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't |
| 1019 | * apply to modules. | 1021 | * apply to modules. |
| 1020 | */ | 1022 | */ |
| 1021 | return l; | 1023 | return l; |
| @@ -1948,6 +1950,10 @@ static int simplify_symbols(struct module *mod, const struct load_info *info) | |||
| 1948 | 1950 | ||
| 1949 | switch (sym[i].st_shndx) { | 1951 | switch (sym[i].st_shndx) { |
| 1950 | case SHN_COMMON: | 1952 | case SHN_COMMON: |
| 1953 | /* Ignore common symbols */ | ||
| 1954 | if (!strncmp(name, "__gnu_lto", 9)) | ||
| 1955 | break; | ||
| 1956 | |||
| 1951 | /* We compiled with -fno-common. These are not | 1957 | /* We compiled with -fno-common. These are not |
| 1952 | supposed to happen. */ | 1958 | supposed to happen. */ |
| 1953 | pr_debug("Common symbol: %s\n", name); | 1959 | pr_debug("Common symbol: %s\n", name); |
| @@ -3214,7 +3220,7 @@ static int load_module(struct load_info *info, const char __user *uargs, | |||
| 3214 | pr_notice_once("%s: module verification failed: signature " | 3220 | pr_notice_once("%s: module verification failed: signature " |
| 3215 | "and/or required key missing - tainting " | 3221 | "and/or required key missing - tainting " |
| 3216 | "kernel\n", mod->name); | 3222 | "kernel\n", mod->name); |
| 3217 | add_taint_module(mod, TAINT_FORCED_MODULE, LOCKDEP_STILL_OK); | 3223 | add_taint_module(mod, TAINT_UNSIGNED_MODULE, LOCKDEP_STILL_OK); |
| 3218 | } | 3224 | } |
| 3219 | #endif | 3225 | #endif |
| 3220 | 3226 | ||
| @@ -3809,12 +3815,12 @@ void print_modules(void) | |||
| 3809 | list_for_each_entry_rcu(mod, &modules, list) { | 3815 | list_for_each_entry_rcu(mod, &modules, list) { |
| 3810 | if (mod->state == MODULE_STATE_UNFORMED) | 3816 | if (mod->state == MODULE_STATE_UNFORMED) |
| 3811 | continue; | 3817 | continue; |
| 3812 | printk(" %s%s", mod->name, module_flags(mod, buf)); | 3818 | pr_cont(" %s%s", mod->name, module_flags(mod, buf)); |
| 3813 | } | 3819 | } |
| 3814 | preempt_enable(); | 3820 | preempt_enable(); |
| 3815 | if (last_unloaded_module[0]) | 3821 | if (last_unloaded_module[0]) |
| 3816 | printk(" [last unloaded: %s]", last_unloaded_module); | 3822 | pr_cont(" [last unloaded: %s]", last_unloaded_module); |
| 3817 | printk("\n"); | 3823 | pr_cont("\n"); |
| 3818 | } | 3824 | } |
| 3819 | 3825 | ||
| 3820 | #ifdef CONFIG_MODVERSIONS | 3826 | #ifdef CONFIG_MODVERSIONS |
