kprobes/arm64: Blacklist sdei watchdog callback functions
commit bdda54cc39843589ee91a0176ca9a94adf307763 openeuler. Functions called in sdei_handler are not allowed to be kprobed, so marked them as NOKPROBE_SYMBOL. There are so many functions in 'watchdog_check_timestamp()'. Luckily, we don't need 'CONFIG_HARDLOCKUP_CHECK_TIMESTAMP' now. So just make CONFIG_SDEI_WATCHDOG depends on !CONFIG_HARDLOCKUP_CHECK_TIMESTAMP in case someone add 'CONFIG_HARDLOCKUP_CHECK_TIMESTAMP' in the future. Signed-off-by: huwentao <huwentao19@h-partners.com>
This commit is contained in:
parent
4108f89bf6
commit
1656fd96c3
|
@ -14,6 +14,7 @@
|
||||||
#include <asm/sdei.h>
|
#include <asm/sdei.h>
|
||||||
#include <asm/virt.h>
|
#include <asm/virt.h>
|
||||||
#include <linux/arm_sdei.h>
|
#include <linux/arm_sdei.h>
|
||||||
|
#include <linux/kprobes.h>
|
||||||
#include <linux/nmi.h>
|
#include <linux/nmi.h>
|
||||||
|
|
||||||
/* We use the secure physical timer as SDEI NMI watchdog timer */
|
/* We use the secure physical timer as SDEI NMI watchdog timer */
|
||||||
|
@ -66,6 +67,7 @@ static int sdei_watchdog_callback(u32 event,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
NOKPROBE_SYMBOL(sdei_watchdog_callback);
|
||||||
|
|
||||||
static void sdei_nmi_watchdog_bind(void *data)
|
static void sdei_nmi_watchdog_bind(void *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
#include <linux/nmi.h>
|
#include <linux/nmi.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/kprobes.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/sysctl.h>
|
#include <linux/sysctl.h>
|
||||||
#include <linux/tick.h>
|
#include <linux/tick.h>
|
||||||
|
@ -333,6 +334,7 @@ bool is_hardlockup(void)
|
||||||
__this_cpu_write(hrtimer_interrupts_saved, hrint);
|
__this_cpu_write(hrtimer_interrupts_saved, hrint);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
NOKPROBE_SYMBOL(is_hardlockup);
|
||||||
|
|
||||||
static void watchdog_interrupt_count(void)
|
static void watchdog_interrupt_count(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include <linux/nmi.h>
|
#include <linux/nmi.h>
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/kprobes.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/sched/debug.h>
|
#include <linux/sched/debug.h>
|
||||||
|
|
||||||
|
@ -155,6 +156,7 @@ void watchdog_hardlockup_check(struct pt_regs *regs)
|
||||||
__this_cpu_write(hard_watchdog_warn, false);
|
__this_cpu_write(hard_watchdog_warn, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
NOKPROBE_SYMBOL(watchdog_hardlockup_check);
|
||||||
|
|
||||||
#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
|
#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF
|
||||||
static DEFINE_PER_CPU(struct perf_event *, watchdog_ev);
|
static DEFINE_PER_CPU(struct perf_event *, watchdog_ev);
|
||||||
|
|
|
@ -855,7 +855,7 @@ config HARDLOCKUP_DETECTOR_PERF
|
||||||
|
|
||||||
config SDEI_WATCHDOG
|
config SDEI_WATCHDOG
|
||||||
bool "SDEI NMI Watchdog support"
|
bool "SDEI NMI Watchdog support"
|
||||||
depends on ARM_SDE_INTERFACE
|
depends on ARM_SDE_INTERFACE && !HARDLOCKUP_CHECK_TIMESTAMP
|
||||||
select HAVE_HARDLOCKUP_DETECTOR_ARCH
|
select HAVE_HARDLOCKUP_DETECTOR_ARCH
|
||||||
select HARDLOCKUP_DETECTOR
|
select HARDLOCKUP_DETECTOR
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue