This is a note to let you know that I've just added the patch titled

    s390/cachinfo: add missing facility check to init_cache_level()

to the 4.1-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-cachinfo-add-missing-facility-check-to-init_cache_level.patch
and it can be found in the queue-4.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 0b991f5cdcd6201e5401f83ca3a672343c3bfc49 Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Mon, 27 Jul 2015 09:53:49 +0200
Subject: s390/cachinfo: add missing facility check to init_cache_level()

From: Heiko Carstens <[email protected]>

commit 0b991f5cdcd6201e5401f83ca3a672343c3bfc49 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 <[email protected]>
Signed-off-by: Heiko Carstens <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 arch/s390/kernel/cache.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/arch/s390/kernel/cache.c
+++ b/arch/s390/kernel/cache.c
@@ -138,6 +138,8 @@ int init_cache_level(unsigned int cpu)
        union cache_topology ct;
        enum cache_type ctype;
 
+       if (!test_facility(34))
+               return -EOPNOTSUPP;
        if (!this_cpu_ci)
                return -EINVAL;
        ct.raw = ecag(EXTRACT_TOPOLOGY, 0, 0);


Patches currently in stable-queue which might be from [email protected] 
are

queue-4.1/s390-cachinfo-add-missing-facility-check-to-init_cache_level.patch
queue-4.1/s390-process-fix-sfpc-inline-assembly.patch
queue-4.1/s390-nmi-fix-vector-register-corruption.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to