Sergey Senozhatsky
04b8eb7a4c
symbol lookup: introduce dereference_symbol_descriptor()
...
dereference_symbol_descriptor() invokes appropriate ARCH specific
function descriptor dereference callbacks:
- dereference_kernel_function_descriptor() if the pointer is a
kernel symbol;
- dereference_module_function_descriptor() if the pointer is a
module symbol.
This is the last step needed to make '%pS/%ps' smart enough to
handle function descriptor dereference on affected ARCHs and
to retire '%pF/%pf'.
To refresh it:
Some architectures (ia64, ppc64, parisc64) use an indirect pointer
for C function pointers - the function pointer points to a function
descriptor and we need to dereference it to get the actual function
pointer.
Function descriptors live in .opd elf section and all affected
ARCHs (ia64, ppc64, parisc64) handle it properly for kernel and
modules. So we, technically, can decide if the dereference is
needed by simply looking at the pointer: if it belongs to .opd
section then we need to dereference it.
The kernel and modules have their own .opd sections, obviously,
that's why we need to split dereference_function_descriptor()
and use separate kernel and module dereference arch callbacks.
Link: http://lkml.kernel.org/r/20171206043649.GB15885@jagdpanzerIV
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: James Bottomley <jejb@parisc-linux.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jessica Yu <jeyu@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-ia64@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Tested-by: Tony Luck <tony.luck@intel.com> #ia64
Tested-by: Santosh Sivaraj <santosh@fossix.org> #powerpc
Tested-by: Helge Deller <deller@gmx.de> #parisc64
Signed-off-by: Petr Mladek <pmladek@suse.com>
2018-01-09 10:45:38 +01:00
..
bpf
Merge branch 'akpm' (patches from Andrew)
2017-11-15 19:42:40 -08:00
cgroup
Merge branch 'for-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
2017-11-15 14:29:44 -08:00
configs
debug
events
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
gcov
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
irq
arm64 updates for 4.15
2017-11-15 10:56:56 -08:00
livepatch
Merge branch 'for-linus' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching
2017-11-15 10:21:58 -08:00
locking
kmemcheck: remove annotations
2017-11-15 18:21:04 -08:00
power
mm: remove __GFP_COLD
2017-11-15 18:21:06 -08:00
printk
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk
2017-11-21 05:28:13 -10:00
rcu
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
sched
sched/autogroup: move sched.h include
2017-12-08 13:51:50 +01:00
time
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
trace
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
.gitignore
acct.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
async.c
audit.c
Audit: remove unused audit_log_secctx function
2017-11-10 16:08:47 -05:00
audit.h
audit/stable-4.15 PR 20171113
2017-11-15 13:28:48 -08:00
audit_fsnotify.c
audit_tree.c
Merge branch 'fsnotify' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
2017-11-14 14:08:20 -08:00
audit_watch.c
auditfilter.c
audit: filter PATH records keyed on filesystem magic
2017-11-10 16:08:56 -05:00
auditsc.c
audit/stable-4.15 PR 20171113
2017-11-15 13:28:48 -08:00
backtracetest.c
bounds.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
capability.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
compat.c
configs.c
context_tracking.c
cpu.c
cpu/hotplug: Reset node state after operation
2017-10-21 16:11:30 +02:00
cpu_pm.c
crash_core.c
kdump: print a message in case parse_crashkernel_mem resulted in zero bytes
2017-11-17 16:10:03 -08:00
crash_dump.c
cred.c
delayacct.c
dma.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
elfcore.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
exec_domain.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
exit.c
locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE()
2017-10-25 11:01:08 +02:00
extable.c
kprobes, x86/alternatives: Use text_mutex to protect smp_alt_modules
2017-11-07 12:20:09 +01:00
fork.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
freezer.c
futex.c
Merge branch 'linus' into core/urgent, to pick up dependent commits
2017-11-04 08:53:04 +01:00
futex_compat.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
groups.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
hung_task.c
irq_work.c
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:33:11 -08:00
jump_label.c
locking/static_keys: Improve uninitialized key warning
2017-10-19 07:49:14 +02:00
kallsyms.c
symbol lookup: introduce dereference_symbol_descriptor()
2018-01-09 10:45:38 +01:00
kcmp.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kcov.c
kcov: support comparison operands collection
2017-11-17 16:10:04 -08:00
kexec.c
kexec_core.c
kexec_file.c
resource: Provide resource struct in resource walk callback
2017-11-07 15:35:57 +01:00
kexec_internal.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
kmod.c
kprobes.c
kprobes: Disable the jprobes APIs
2017-10-20 11:02:29 +02:00
ksysfs.c
kthread.c
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
latencytop.c
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
memremap.c
memremap: add scheduling point to devm_memremap_pages
2017-10-03 17:54:25 -07:00
module-internal.h
module.c
sections: split dereference_function_descriptor()
2018-01-09 10:45:37 +01:00
module_signing.c
notifier.c
nsproxy.c
padata.c
padata: ensure padata_do_serial() runs on the correct CPU
2017-10-07 12:10:32 +08:00
panic.c
kernel/panic.c: add TAINT_AUX
2017-11-17 16:10:04 -08:00
params.c
kernel/params.c: improve STANDARD_PARAM_DEF readability
2017-10-03 17:54:26 -07:00
pid.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
pid_namespace.c
pid: remove pidhash
2017-11-17 16:10:04 -08:00
profile.c
ptrace.c
range.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
reboot.c
kernel/reboot.c: add devm_register_reboot_notifier()
2017-11-17 16:10:04 -08:00
relay.c
resource.c
x86/mm, resource: Use PAGE_KERNEL protection for ioremap of memory pages
2017-11-07 15:35:58 +01:00
seccomp.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
signal.c
Merge branch 'akpm' (patches from Andrew)
2017-11-17 16:56:17 -08:00
smp.c
smp/core: Use lockdep to assert IRQs are disabled/enabled
2017-11-08 11:13:50 +01:00
smpboot.c
watchdog/core, powerpc: Lock cpus across reconfiguration
2017-10-04 10:53:54 +02:00
smpboot.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
softirq.c
kmemcheck: rip it out
2017-11-15 18:21:05 -08:00
stacktrace.c
stop_machine.c
sys.c
arm64 updates for 4.15
2017-11-15 10:56:56 -08:00
sys_ni.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
sysctl.c
kernel/sysctl.c: code cleanups
2017-11-17 16:10:03 -08:00
sysctl_binary.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
task_work.c
Merge branch 'linus' into locking/core, to resolve conflicts
2017-11-07 10:32:44 +01:00
taskstats.c
test_kprobes.c
kprobes: Disable the jprobes test code
2017-10-20 11:02:54 +02:00
torture.c
tracepoint.c
tsacct.c
ucount.c
uid16.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
umh.c
kernel/umh.c: optimize 'proc_cap_handler()'
2017-11-17 16:10:01 -08:00
up.c
user-return-notifier.c
user.c
userns: use union in {g,u}idmap struct
2017-10-31 17:22:58 -05:00
user_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2017-11-16 12:20:15 -08:00
utsname.c
utsname_sysctl.c
watchdog.c
Merge branch 'linus' into sched/core, to pick up fixes
2017-11-08 10:17:15 +01:00
watchdog_hld.c
Merge branch 'linus' into core/urgent, to pick up dependent commits
2017-11-04 08:53:04 +01:00
workqueue.c
Merge branch 'for-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2017-11-15 14:15:21 -08:00
workqueue_internal.h
Merge branch 'for-4.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2017-11-06 12:26:49 -08:00