Commit 9c2c933d authored by Xiongfeng Wang's avatar Xiongfeng Wang
Browse files

kprobes/arm64: Blacklist sdei watchdog callback functions

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8LQCC


CVE: NA

-------------------------------------------------

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: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
Reviewed-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Reviewed-by: default avatarHanjun Guo <guohanjun@huawei.com>

 Conflicts:
	kernel/watchdog.c
	kernel/watchdog_hld.c
Signed-off-by: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
parent 1509d06c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <asm/sdei.h>
#include <asm/virt.h>
#include <linux/arm_sdei.h>
#include <linux/kprobes.h>
#include <linux/nmi.h>

/* We use the secure physical timer as SDEI NMI watchdog timer */
@@ -80,6 +81,7 @@ static int sdei_watchdog_callback(u32 event,

	return 0;
}
NOKPROBE_SYMBOL(sdei_watchdog_callback);

static void sdei_nmi_watchdog_bind(void *data)
{
+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/cpu.h>
#include <linux/nmi.h>
#include <linux/init.h>
#include <linux/kprobes.h>
#include <linux/module.h>
#include <linux/sysctl.h>
#include <linux/tick.h>
@@ -127,6 +128,7 @@ static bool is_hardlockup(unsigned int cpu)

	return false;
}
NOKPROBE_SYMBOL(is_hardlockup);

static void watchdog_hardlockup_kick(void)
{
@@ -184,6 +186,7 @@ void watchdog_hardlockup_check(unsigned int cpu, struct pt_regs *regs)
		per_cpu(watchdog_hardlockup_warned, cpu) = false;
	}
}
NOKPROBE_SYMBOL(watchdog_hardlockup_check);

#else /* CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER */