linux/arch/s390/kernel
Michael Holzheu 47508cbfd8 s390/dis: Fix handling of format specifiers
commit 272fa59ccb upstream.

The print_insn() function returns strings like "lghi %r1,0". To escape the
'%' character in sprintf() a second '%' is used. For example "lghi %%r1,0"
is converted into "lghi %r1,0".

After print_insn() the output string is passed to printk(). Because format
specifiers like "%r" or "%f" are ignored by printk() this works by chance
most of the time. But for instructions with control registers like
"lctl %c6,%c6,780" this fails because printk() interprets "%c" as
character format specifier.

Fix this problem and escape the '%' characters twice.

For example "lctl %%%%c6,%%%%c6,780" is then converted by sprintf()
into "lctl %%c6,%%c6,780" and by printk() into "lctl %c6,%c6,780".

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
[ luis: backported to 3.16:
  - drop condition with OPERAND_VR introduced only with commit
    3585cb0280 ("s390/disassembler: add vector instructions") ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2016-01-25 10:43:56 +00:00
..
vdso32 s390/time,vdso: fix clock_gettime for CLOCK_MONOTONIC 2013-12-02 18:15:25 +01:00
vdso64 s390/time,vdso: fix clock_gettime for CLOCK_MONOTONIC 2013-12-02 18:15:25 +01:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
cache.c s390, cacheinfo: Fix CPU hotplug callback registration 2014-03-20 13:43:41 +01:00
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_linux.c groups: Consolidate the setgroups permission checks 2015-01-15 10:43:33 +00:00
compat_linux.h s390/compat: correct ucontext layout for high gprs 2014-06-16 10:31:40 +02:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390: split TIF bits into CIF, PIF and TIF bits 2014-05-20 08:58:47 +02:00
compat_wrapper.c s390/compat: fix typo 2014-04-11 13:53:35 +02:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
debug.c s390: convert use of typedef ctl_table to struct ctl_table 2013-10-28 08:36:25 +01:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/dis: Fix handling of format specifiers 2016-01-25 10:43:56 +00:00
dumpstack.c s390: show_registers() should not map user space addresses to kernel symbols 2014-04-11 13:53:27 +02:00
early.c s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry.h s390/compat: get rid of compat wrapper assembly code 2014-03-06 16:30:48 +01:00
entry.S At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
entry64.S At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
ftrace.c ftrace: Do not pass data to ftrace_dyn_arch_init 2014-03-07 10:06:14 -05:00
head.S s390: require mvcos facility, not tod clock steering facility 2014-07-16 10:48:09 +02:00
head31.S s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
head64.S s390: fix kernel crash due to linkage stack instructions 2014-02-05 11:00:50 +01:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
ipl.c s390/uaccess: always run the kernel in home space 2013-10-24 17:16:57 +02:00
irq.c s390: Avoid call to irq_reserve_irqs() 2014-05-16 14:05:22 +02:00
jump_label.c s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-11-15 16:47:22 -08:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390: make various functions static, add declarations to header files 2013-09-07 11:58:03 +02:00
Makefile s390/compat: remove compat exec domain 2014-03-07 15:26:02 +01:00
mcount.S s390/ftrace: fix mcount adjustment 2013-05-15 13:09:09 +02:00
mcount64.S s390/ftrace: fix mcount adjustment 2013-05-15 13:09:09 +02:00
module.c mm/arch: use NUMA_NO_NODE 2013-11-13 12:09:05 +09:00
nmi.c s390: split TIF bits into CIF, PIF and TIF bits 2014-05-20 08:58:47 +02:00
os_info.c Include missing linux/slab.h inclusions 2013-04-29 15:42:01 -04:00
perf_cpum_cf.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
perf_cpum_cf_events.c s390/cpum_cf: Export event names in sysfs 2013-12-16 14:37:50 +01:00
perf_cpum_sf.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
perf_event.c s390/perf: make print_debug_cf() static 2014-03-14 12:59:32 +01:00
pgm_check.S s390/mm: handle asce-type exceptions as normal page fault 2013-11-25 09:15:42 +01:00
process.c s390/process: fix sfpc inline assembly 2015-08-12 09:48:35 +01:00
processor.c s390: delete __cpuinit usage from all s390 files 2013-07-14 19:36:53 -04:00
ptrace.c s390/ptrace: fix PSW mask check 2014-07-16 10:48:11 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
s390_ksyms.c s390: use IS_ENABLED to check if a CONFIG is set to y or m 2013-12-16 14:38:04 +01:00
sclp.S s390/sclp: clear upper register halves in _sclp_print_early 2015-08-12 09:48:34 +01:00
setup.c s390/dump: Remove CONFIG_ZFCPDUMP 2014-05-20 08:58:43 +02:00
signal.c s390: split TIF bits into CIF, PIF and TIF bits 2014-05-20 08:58:47 +02:00
smp.c s390/smp: Avoid busy loop after halt and "begin" on z/VM 2014-05-20 08:58:45 +02:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c s390/hibernate: fix save and restore of kernel text section 2015-05-06 10:24:18 +01:00
swsusp_asm64.S s390/hibernate: add early resume function 2013-08-30 08:57:15 +02:00
sys_s390.c teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long 2013-03-03 22:46:22 -05:00
syscalls.S s390: wire up sys_renameat2 2014-04-11 13:53:29 +02:00
sysinfo.c s390: delete __cpuinit usage from all s390 files 2013-07-14 19:36:53 -04:00
time.c s390/time: cast tv_nsec to u64 prior to shift in update_vsyscall 2014-05-27 10:26:02 +02:00
topology.c s390/topology: call set_sched_topology early 2014-11-17 14:11:39 +00:00
traps.c s390/dumpstack: fix call chain walking 2013-04-17 14:07:28 +02:00
vdso.c s390/vdso: fix access-list entry initialization 2013-12-02 15:31:09 +01:00
vmlinux.lds.S s390/linker skript: discard exit.data at runtime 2013-02-14 15:55:21 +01:00
vtime.c s390/vtime: correct idle time calculation 2013-10-31 09:52:52 +01:00