FAILED: patch "[PATCH] s390/chsc: Add exception handler for CHSC instruction" failed to apply to 4.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
77759137248f34864a8f7a58bbcebfcf1047504aMon Sep 17 00:00:00 2001
From: Peter Oberparleiter <[email protected]>
Date: Mon, 20 Feb 2017 14:52:58 +0100
Subject: [PATCH] s390/chsc: Add exception handler for CHSC instruction
Prevent kernel crashes due to unhandled exceptions raised by the CHSC instruction which may for example be triggered by invalid ioctl data.
Fixes 64150adf89df ("s390/cio: Introduce generic synchronous CHSC IOCTL")
Cc <[email protected]> # v3.11+
Signed-off-by Peter Oberparleiter <[email protected]>
Reviewed-by Sebastian Ott <[email protected]>
Reviewed-by Cornelia Huck <[email protected]>
Signed-off-by Martin Schwidefsky <[email protected]>
drivers/s390/cio/ioasm.c +5 -3
@@ -165,13 +165,15 @@ int tpi(struct tpi_info *addr)int chsc (void *chsc_area) {typedef struct {char _[4096 ]; }addr_type ; -int cc; +int cc = -EIO ; asmvolatile (" .insn rre,0xb25f0000,%2,0\n" -" ipm %0\n" +"0: ipm %0\n" " srl %0,28\n" - :"=d" (cc),"=m" (*(addr_type *) chsc_area) +"1:\n" + EX_TABLE(0b, 1b) + : "+d" (cc), "=m" (*(addr_type *) chsc_area) : "d" (chsc_area), "m" (*(addr_type *) chsc_area) : "cc"); trace_s390_cio_chsc(chsc_area, cc);