From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Palmer Dabbelt <palmerdabbelt@google.com>,
Guo Ren <guoren@kernel.org>, Sasha Levin <sashal@kernel.org>,
linux-riscv@lists.infradead.org
Subject: [PATCH AUTOSEL 5.8 07/20] RISC-V: Take text_mutex in ftrace_init_nop()
Date: Mon, 21 Sep 2020 10:40:14 -0400 [thread overview]
Message-ID: <20200921144027.2135390-7-sashal@kernel.org> (raw)
In-Reply-To: <20200921144027.2135390-1-sashal@kernel.org>
From: Palmer Dabbelt <palmerdabbelt@google.com>
[ Upstream commit 66d18dbda8469a944dfec6c49d26d5946efba218 ]
Without this we get lockdep failures. They're spurious failures as SMP isn't
up when ftrace_init_nop() is called. As far as I can tell the easiest fix is
to just take the lock, which also seems like the safest fix.
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Acked-by: Guo Ren <guoren@kernel.org>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/riscv/include/asm/ftrace.h | 7 +++++++
arch/riscv/kernel/ftrace.c | 19 +++++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/arch/riscv/include/asm/ftrace.h b/arch/riscv/include/asm/ftrace.h
index ace8a6e2d11d3..845002cc2e571 100644
--- a/arch/riscv/include/asm/ftrace.h
+++ b/arch/riscv/include/asm/ftrace.h
@@ -66,6 +66,13 @@ do { \
* Let auipc+jalr be the basic *mcount unit*, so we make it 8 bytes here.
*/
#define MCOUNT_INSN_SIZE 8
+
+#ifndef __ASSEMBLY__
+struct dyn_ftrace;
+int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec);
+#define ftrace_init_nop ftrace_init_nop
+#endif
+
#endif
#endif /* _ASM_RISCV_FTRACE_H */
diff --git a/arch/riscv/kernel/ftrace.c b/arch/riscv/kernel/ftrace.c
index 2ff63d0cbb500..99e12faa54986 100644
--- a/arch/riscv/kernel/ftrace.c
+++ b/arch/riscv/kernel/ftrace.c
@@ -97,6 +97,25 @@ int ftrace_make_nop(struct module *mod, struct dyn_ftrace *rec,
return __ftrace_modify_call(rec->ip, addr, false);
}
+
+/*
+ * This is called early on, and isn't wrapped by
+ * ftrace_arch_code_modify_{prepare,post_process}() and therefor doesn't hold
+ * text_mutex, which triggers a lockdep failure. SMP isn't running so we could
+ * just directly poke the text, but it's simpler to just take the lock
+ * ourselves.
+ */
+int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec)
+{
+ int out;
+
+ ftrace_arch_code_modify_prepare();
+ out = ftrace_make_nop(mod, rec, MCOUNT_ADDR);
+ ftrace_arch_code_modify_post_process();
+
+ return out;
+}
+
int ftrace_update_ftrace_func(ftrace_func_t func)
{
int ret = __ftrace_modify_call((unsigned long)&ftrace_call,
--
2.25.1
next prev parent reply other threads:[~2020-09-21 14:40 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-21 14:40 [PATCH AUTOSEL 5.8 01/20] device_cgroup: Fix RCU list debugging warning Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 02/20] ASoC: pcm3168a: ignore 0 Hz settings Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 03/20] ASoC: wm8994: Skip setting of the WM8994_MICBIAS register for WM1811 Sasha Levin
2020-09-21 15:07 ` Mark Brown
2020-09-22 14:25 ` Sasha Levin
2020-09-22 14:42 ` Mark Brown
2020-09-22 17:46 ` Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 04/20] ASoC: wm8994: Ensure the device is resumed in wm89xx_mic_detect functions Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 05/20] ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN Converter9 2-in-1 Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 06/20] clk: versatile: Add of_node_put() before return statement Sasha Levin
2020-09-21 14:40 ` Sasha Levin [this message]
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 08/20] i2c: aspeed: Mask IRQ status to relevant bits Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 09/20] s390/init: add missing __init annotations Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 10/20] lockdep: fix order in trace_hardirqs_off_caller() Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 11/20] EDAC/ghes: Check whether the driver is on the safe list correctly Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 12/20] drm/amdkfd: fix a memory leak issue Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 13/20] drm/amd/display: Don't use DRM_ERROR() for DTM add topology Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 14/20] drm/amd/display: update nv1x stutter latencies Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 15/20] drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 16/20] drm/amd/display: Don't log hdcp module warnings in dmesg Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() Sasha Levin
2020-10-14 11:09 ` Kieran Bingham
2020-10-14 11:23 ` Hans de Goede
2020-10-14 11:52 ` Kieran Bingham
2020-10-14 13:46 ` Hans de Goede
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 18/20] objtool: Fix noreturn detection for ignored functions Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 19/20] i2c: mediatek: Send i2c master code at more than 1MHz Sasha Levin
2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 20/20] riscv: Fix Kendryte K210 device tree Sasha Levin
2020-09-23 0:27 ` Damien Le Moal
2020-09-26 19:42 ` Palmer Dabbelt
2020-09-26 20:51 ` Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200921144027.2135390-7-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=guoren@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmerdabbelt@google.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).