Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp38770ybj; Fri, 8 May 2020 06:05:42 -0700 (PDT) X-Google-Smtp-Source: APiQypJ8pGVAgLtasMsh7WvSLzkipbelD7iAw0V2LGZJYTVeAlAb1YQYSD2l7jDSpFhckY8LJ2lP X-Received: by 2002:a17:906:400a:: with SMTP id v10mr1715490ejj.300.1588943142532; Fri, 08 May 2020 06:05:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588943142; cv=none; d=google.com; s=arc-20160816; b=ai+2marRdYc5LAZDFmvOJMqqrB5VQJ9AgfPpXTfr0ga2qa6dxfkg4clTz6iXLCubBj IYnomgnAtgYxdPbmpLIAMHDttLP1TO2Xa+f9ykEgbP05qsPDmj/HNaIRd1YvtSm2dR3r w0IX50TbJKxW+1jRIxS/DD9tYIdw0zw3AG09DS0lXkTPvMzQ09L4zj8Fj8DrLqPZQzyn g/Ows9+KvB4I/1xOt/ZKZLYAr3wNr/AKSMcH6NlZDT2KEuAO3mro9L4PQWkNsPSzQMko /LXxbE3M79JuMvThCShyZaZvxUp3YDTjUxFENlPLdmrlND8gNvv/FXlwDU2V2YEnO/FD D/QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dfShIn5JMEBb3+9hJxvqDp5XotNVZqv2JwcrriDxNv4=; b=E62fMG9pfC82QgBnLtSzljSALpjjcTrDVAiyea4VNlE2p7hUy6lIZBDIF2nzG8Ys6i rtLt3l9pnCwE1iqgiVcoI+MySXXbX493VoQNzydbB75/IRlTs2tGARzvgNpmmFB4iCs5 2jaZN1HZMIMAij60hCpfZhte7OtOUnViHJv0uxJQyWVMZUPb558s1OJGWXOt9R7NoPxy xAwO0bxllAPItL9+7tDTmOTLm6hmosTaKf2HAJCKhoCJ3npPUv/89QbWhTYTSffjPbjc r/HEuJ/TZNngRegTLAcM1szRlx9bLJYN3OBj3PQYMAQWmPto+4p6D/qA4fvfHRpeb7ST jvew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=o+KP2wiw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l20si892022ejr.179.2020.05.08.06.05.05; Fri, 08 May 2020 06:05:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=o+KP2wiw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729487AbgEHNDW (ORCPT + 99 others); Fri, 8 May 2020 09:03:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:57700 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727123AbgEHMuQ (ORCPT ); Fri, 8 May 2020 08:50:16 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 458F1218AC; Fri, 8 May 2020 12:50:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588942215; bh=LTRsRa4wOMiSn/uoTzJ5hVuhRHAn+clpoI749rHtK7w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o+KP2wiwUxqKYaYhjTDkniVzStddqB3Nyc/NZBwby9D3Y63qKdl/U/gtA1fwz9EHN C8fqD9Xh++kX4HgxIsFXV7UlqcNSNElR+U5AJkNL5NB7nfJmqBR43NNSeK1KeY+OPw mGlnKZs8j8IJZj4bD/mN+Ai9zbR28xOMTr5ZmWGo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Philipp Rudo , Vasily Gorbik , Sasha Levin Subject: [PATCH 4.14 12/22] s390/ftrace: fix potential crashes when switching tracers Date: Fri, 8 May 2020 14:35:24 +0200 Message-Id: <20200508123035.392899555@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200508123033.915895060@linuxfoundation.org> References: <20200508123033.915895060@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Philipp Rudo [ Upstream commit 8ebf6da9db1b2a20bb86cc1bee2552e894d03308 ] Switching tracers include instruction patching. To prevent that a instruction is patched while it's read the instruction patching is done in stop_machine 'context'. This also means that any function called during stop_machine must not be traced. Thus add 'notrace' to all functions called within stop_machine. Fixes: 1ec2772e0c3c ("s390/diag: add a statistic for diagnose calls") Fixes: 38f2c691a4b3 ("s390: improve wait logic of stop_machine") Fixes: 4ecf0a43e729 ("processor: get rid of cpu_relax_yield") Signed-off-by: Philipp Rudo Signed-off-by: Vasily Gorbik Signed-off-by: Sasha Levin --- arch/s390/kernel/diag.c | 2 +- arch/s390/kernel/smp.c | 4 ++-- arch/s390/kernel/trace.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/s390/kernel/diag.c b/arch/s390/kernel/diag.c index 35c842aa87058..4c7cf8787a848 100644 --- a/arch/s390/kernel/diag.c +++ b/arch/s390/kernel/diag.c @@ -128,7 +128,7 @@ void diag_stat_inc(enum diag_stat_enum nr) } EXPORT_SYMBOL(diag_stat_inc); -void diag_stat_inc_norecursion(enum diag_stat_enum nr) +void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr) { this_cpu_inc(diag_stat.counter[nr]); trace_s390_diagnose_norecursion(diag_map[nr].code); diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index b649a6538350d..808f4fbe869e7 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@ -406,7 +406,7 @@ int smp_find_processor_id(u16 address) return -1; } -bool arch_vcpu_is_preempted(int cpu) +bool notrace arch_vcpu_is_preempted(int cpu) { if (test_cpu_flag_of(CIF_ENABLED_WAIT, cpu)) return false; @@ -416,7 +416,7 @@ bool arch_vcpu_is_preempted(int cpu) } EXPORT_SYMBOL(arch_vcpu_is_preempted); -void smp_yield_cpu(int cpu) +void notrace smp_yield_cpu(int cpu) { if (MACHINE_HAS_DIAG9C) { diag_stat_inc_norecursion(DIAG_STAT_X09C); diff --git a/arch/s390/kernel/trace.c b/arch/s390/kernel/trace.c index 490b52e850145..11a669f3cc93c 100644 --- a/arch/s390/kernel/trace.c +++ b/arch/s390/kernel/trace.c @@ -14,7 +14,7 @@ EXPORT_TRACEPOINT_SYMBOL(s390_diagnose); static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth); -void trace_s390_diagnose_norecursion(int diag_nr) +void notrace trace_s390_diagnose_norecursion(int diag_nr) { unsigned long flags; unsigned int *depth; -- 2.20.1