linux/arch/s390
Heiko Carstens a2bfecc423 s390/cachinfo: add missing facility check to init_cache_level()
commit 0b991f5cdc upstream.

Stephen Powell reported the following crash on a z890 machine:

Kernel BUG at 00000000001219d0 [verbose debug info unavailable]
illegal operation: 0001 ilc:3 [#1] SMP
Krnl PSW : 0704e00180000000 00000000001219d0 (init_cache_level+0x38/0xe0)
	   R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 EA:3
Krnl Code: 00000000001219c2: a7840056		brc	8,121a6e
	   00000000001219c6: a7190000		lghi	%r1,0
	  #00000000001219ca: eb101000004c	ecag	%r1,%r0,0(%r1)
	  >00000000001219d0: a7390000		lghi	%r3,0
	   00000000001219d4: e310f0a00024	stg	%r1,160(%r15)
	   00000000001219da: a7080000		lhi	%r0,0
	   00000000001219de: a7b9f000		lghi	%r11,-4096
	   00000000001219e2: c0a0002899d9	larl	%r10,634d94
Call Trace:
 [<0000000000478ee2>] detect_cache_attributes+0x2a/0x2b8
 [<000000000097c9b0>] cacheinfo_sysfs_init+0x60/0xc8
 [<00000000001001c0>] do_one_initcall+0x98/0x1c8
 [<000000000094fdc2>] kernel_init_freeable+0x212/0x2d8
 [<000000000062352e>] kernel_init+0x26/0x118
 [<000000000062fd2e>] kernel_thread_starter+0x6/0xc

The illegal operation was executed because of a missing facility check,
which should have made sure that the ECAG execution would only be executed
on machines which have the general-instructions-extension facility
installed.

Reported-and-tested-by: Stephen Powell <zlinuxman@wowway.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-08-10 12:21:52 -07:00
..
appldata s390: appldata: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
boot s390: remove "64" suffix from a couple of files 2015-03-25 11:49:34 +01:00
configs s390: update default configuration 2015-01-22 12:16:09 +01:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2015-05-22 14:26:36 -07:00
hypfs sysfs: Create mountpoints with sysfs_create_mount_point 2015-07-21 10:10:01 -07:00
include s390/nmi: fix vector register corruption 2015-08-10 12:21:52 -07:00
kernel s390/cachinfo: add missing facility check to init_cache_level() 2015-08-10 12:21:52 -07:00
kvm KVM: s390: clear floating interrupt bitmap and parameters 2015-07-10 09:49:36 -07:00
lib s390: remove "64" suffix from mem64.S and swsusp_asm64.S 2015-03-25 11:49:51 +01:00
mm s390/mm: change swap pte encoding and pgtable cleanup 2015-04-23 16:56:20 +02:00
net s390/bpf: clear correct BPF accumulator register 2015-08-10 12:21:52 -07:00
oprofile s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2015-04-20 10:15:33 -07:00
defconfig s390: update default configuration 2015-01-22 12:16:09 +01:00
Kbuild s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
Kconfig s390/bpf: add dependency to z196 features 2015-04-23 16:55:50 +02:00
Kconfig.debug Kconfig: consolidate CONFIG_DEBUG_STRICT_USER_COPY_CHECKS 2013-04-30 17:04:09 -07:00
Makefile s390: remove 31 bit support 2015-03-25 11:49:33 +01:00