s390/sclp: clear upper register halves in _sclp_print_early
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 6 Jul 2015 15:58:19 +0000 (17:58 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 7 Jul 2015 07:28:29 +0000 (09:28 +0200)
commitf9c87a6f46d508eae0d9ae640be98d50f237f827
treea4a519a2b0eed1908d1075a2caa05b75ac9110ba
parenta215c8fbde8600d133f122691d0f8c30de6dda02
s390/sclp: clear upper register halves in _sclp_print_early

If the kernel is compiled with gcc 5.1 and the XZ compression option
the decompress_kernel function calls _sclp_print_early in 64-bit mode
while the content of the upper register half of %r6 is non-zero.
This causes a specification exception on the servc instruction in
_sclp_servc.

The _sclp_print_early function saves and restores the upper registers
halves but it fails to clear them for the 31-bit code of the mini sclp
driver.

Cc: <stable@vger.kernel.org>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/sclp.S