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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241017101712.5a052712@gandalf.local.home>
Date: Thu, 17 Oct 2024 10:17:12 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Mike Rapoport <rppt@...nel.org>
Cc: Andrew Morton <akpm@...ux-foundation.org>, Luis Chamberlain
 <mcgrof@...nel.org>, Andreas Larsson <andreas@...sler.com>, Andy Lutomirski
 <luto@...nel.org>, Ard Biesheuvel <ardb@...nel.org>, Arnd Bergmann
 <arnd@...db.de>, Borislav Petkov <bp@...en8.de>, Brian Cain
 <bcain@...cinc.com>, Catalin Marinas <catalin.marinas@....com>, Christoph
 Hellwig <hch@...radead.org>, Christophe Leroy
 <christophe.leroy@...roup.eu>, Dave Hansen <dave.hansen@...ux.intel.com>,
 Dinh Nguyen <dinguyen@...nel.org>, Geert Uytterhoeven
 <geert@...ux-m68k.org>, Guo Ren <guoren@...nel.org>, Helge Deller
 <deller@....de>, Huacai Chen <chenhuacai@...nel.org>, Ingo Molnar
 <mingo@...hat.com>, Johannes Berg <johannes@...solutions.net>, John Paul
 Adrian Glaubitz <glaubitz@...sik.fu-berlin.de>, Kent Overstreet
 <kent.overstreet@...ux.dev>, "Liam R. Howlett" <Liam.Howlett@...cle.com>,
 Mark Rutland <mark.rutland@....com>, Masami Hiramatsu
 <mhiramat@...nel.org>, Matt Turner <mattst88@...il.com>, Max Filippov
 <jcmvbkbc@...il.com>, Michael Ellerman <mpe@...erman.id.au>, Michal Simek
 <monstr@...str.eu>, Oleg Nesterov <oleg@...hat.com>, Palmer Dabbelt
 <palmer@...belt.com>, Peter Zijlstra <peterz@...radead.org>, Richard
 Weinberger <richard@....at>, Russell King <linux@...linux.org.uk>, Song Liu
 <song@...nel.org>, Stafford Horne <shorne@...il.com>, Suren Baghdasaryan
 <surenb@...gle.com>, Thomas Bogendoerfer <tsbogend@...ha.franken.de>,
 Thomas Gleixner <tglx@...utronix.de>, Uladzislau Rezki <urezki@...il.com>,
 Vineet Gupta <vgupta@...nel.org>, Will Deacon <will@...nel.org>,
 bpf@...r.kernel.org, linux-alpha@...r.kernel.org,
 linux-arch@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
 linux-csky@...r.kernel.org, linux-hexagon@...r.kernel.org,
 linux-kernel@...r.kernel.org, linux-m68k@...ts.linux-m68k.org,
 linux-mips@...r.kernel.org, linux-mm@...ck.org,
 linux-modules@...r.kernel.org, linux-openrisc@...r.kernel.org,
 linux-parisc@...r.kernel.org, linux-riscv@...ts.infradead.org,
 linux-sh@...r.kernel.org, linux-snps-arc@...ts.infradead.org,
 linux-trace-kernel@...r.kernel.org, linux-um@...ts.infradead.org,
 linuxppc-dev@...ts.ozlabs.org, loongarch@...ts.linux.dev,
 sparclinux@...r.kernel.org, x86@...nel.org
Subject: Re: [PATCH v6 6/8] x86/module: prepare module loading for ROX
 allocations of text

On Wed, 16 Oct 2024 17:01:28 -0400
Steven Rostedt <rostedt@...dmis.org> wrote:

> If this is only needed for module load, can we at least still use the
> text_poke_early() at boot up?
> 
>  	if (ftrace_poke_late) {
>  		text_poke_queue((void *)ip, new_code, MCOUNT_INSN_SIZE, NULL);
> 	} else if (system_state == SYSTEM_BOOTING) {
> 		text_poke_early((void *)ip, new_code, MCOUNT_INSN_SIZE);
>  	} else {
>  		mutex_lock(&text_mutex);
>  		text_poke((void *)ip, new_code, MCOUNT_INSN_SIZE);
>  		mutex_unlock(&text_mutex);
>  	}
> 
> ?
> 
> The above if statement looks to slow things down just slightly, but only by
> 2ms, which is more reasonable.

I changed the above to this (yes it's a little hacky) and got my 2ms back!

-- Steve

DEFINE_STATIC_KEY_TRUE(ftrace_modify_boot);

static int __init ftrace_boot_init_done(void)
{
	static_branch_disable(&ftrace_modify_boot);
	return 0;
}
/* Ftrace updates happen before core init */
core_initcall(ftrace_boot_init_done);

/*
 * Marked __ref because it calls text_poke_early() which is .init.text. That is
 * ok because that call will happen early, during boot, when .init sections are
 * still present.
 */
static int __ref
ftrace_modify_code_direct(unsigned long ip, const char *old_code,
			  const char *new_code)
{
	int ret = ftrace_verify_code(ip, old_code);

	if (ret)
		return ret;

	/* replace the text with the new text */
	if (static_branch_unlikely(&ftrace_modify_boot)) {
		text_poke_early((void *)ip, new_code, MCOUNT_INSN_SIZE);
	} else if (ftrace_poke_late) {
		text_poke_queue((void *)ip, new_code, MCOUNT_INSN_SIZE, NULL);
	} else {
		mutex_lock(&text_mutex);
		text_poke((void *)ip, new_code, MCOUNT_INSN_SIZE);
		mutex_unlock(&text_mutex);
	}
	return 0;
}

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ