lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 7 Mar 2022 23:47:27 +0800 From: Lecopzer Chen <lecopzer.chen@...iatek.com> To: <linux-kernel@...r.kernel.org> CC: <lecopzer.chen@...iatek.com>, <acme@...nel.org>, <akpm@...ux-foundation.org>, <alexander.shishkin@...ux.intel.com>, <catalin.marinas@....com>, <davem@...emloft.net>, <jolsa@...hat.com>, <jthierry@...hat.com>, <keescook@...omium.org>, <kernelfans@...il.com>, <linux-arm-kernel@...ts.infradead.org>, <linux-mediatek@...ts.infradead.org>, <linux-perf-users@...r.kernel.org>, <mark.rutland@....com>, <masahiroy@...nel.org>, <matthias.bgg@...il.com>, <maz@...nel.org>, <mcgrof@...nel.org>, <mingo@...hat.com>, <namhyung@...nel.org>, <nixiaoming@...wei.com>, <peterz@...radead.org>, <pmladek@...e.com>, <sparclinux@...r.kernel.org>, <sumit.garg@...aro.org>, <wangqing@...o.com>, <will@...nel.org>, <yj.chiang@...iatek.com> Subject: [PATCH v2 3/5] kernel/watchdog_hld: Ensure CPU-bound context when creating hardlockup detector event From: Pingfan Liu <kernelfans@...il.com> hardlockup_detector_event_create() should create perf_event on the current CPU. Preemption could not get disabled because perf_event_create_kernel_counter() allocates memory. Instead, the CPU locality is achieved by processing the code in a per-CPU bound kthread. Add a check to prevent mistakes when calling the code in another code path. Signed-off-by: Pingfan Liu <kernelfans@...il.com> Co-developed-by: Lecopzer Chen <lecopzer.chen@...iatek.com> Signed-off-by: Lecopzer Chen <lecopzer.chen@...iatek.com> Reviewed-by: Petr Mladek <pmladek@...e.com> --- kernel/watchdog_hld.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c index 247bf0b1582c..96b717205952 100644 --- a/kernel/watchdog_hld.c +++ b/kernel/watchdog_hld.c @@ -165,10 +165,16 @@ static void watchdog_overflow_callback(struct perf_event *event, static int hardlockup_detector_event_create(void) { - unsigned int cpu = smp_processor_id(); + unsigned int cpu; struct perf_event_attr *wd_attr; struct perf_event *evt; + /* + * Preemption is not disabled because memory will be allocated. + * Ensure CPU-locality by calling this in per-CPU kthread. + */ + WARN_ON(!is_percpu_thread()); + cpu = raw_smp_processor_id(); wd_attr = &wd_hw_attr; wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh); -- 2.25.1
Powered by blists - more mailing lists