Diagnose 224 stores 4k bytes, which cannot be deduced from the inline assembly constraints. This leads to KMSAN false positives. Unpoison the output buffer manually with kmsan_unpoison_memory(). Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx> --- arch/s390/kernel/diag.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c index 92fdc35f028c..fb83a21014d0 100644 --- a/arch/s390/kernel/diag.c +++ b/arch/s390/kernel/diag.c @@ -9,6 +9,7 @@ #include <linux/export.h> #include <linux/init.h> #include <linux/cpu.h> +#include <linux/kmsan-checks.h> #include <linux/seq_file.h> #include <linux/debugfs.h> #include <linux/vmalloc.h> @@ -255,6 +256,7 @@ int diag224(void *ptr) "1:\n" EX_TABLE(0b,1b) : "+d" (rc) :"d" (0), "d" (addr) : "memory"); + kmsan_unpoison_memory(ptr, PAGE_SIZE); return rc; } EXPORT_SYMBOL(diag224); -- 2.43.0