From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0EF4E7717F for ; Thu, 12 Dec 2024 14:23:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 42F6A6B008C; Thu, 12 Dec 2024 09:23:59 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B8736B0092; Thu, 12 Dec 2024 09:23:59 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 232956B0093; Thu, 12 Dec 2024 09:23:59 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 012B56B008C for ; Thu, 12 Dec 2024 09:23:58 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 4D5E244AED for ; Thu, 12 Dec 2024 14:23:16 +0000 (UTC) X-FDA: 82886523258.01.B6D2785 Received: from out01.mta.xmission.com (out01.mta.xmission.com [166.70.13.231]) by imf25.hostedemail.com (Postfix) with ESMTP id A09E9A0002 for ; Thu, 12 Dec 2024 14:22:55 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=xmission.com; spf=pass (imf25.hostedemail.com: domain of ebiederm@xmission.com designates 166.70.13.231 as permitted sender) smtp.mailfrom=ebiederm@xmission.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1734013370; a=rsa-sha256; cv=none; b=tRzs7ycKuVFjuhG10gjBt4nPbZXZ1aZEs7diOorjNA6QHKAIFJikfmRAxiaBRX1IDkhSs+ tiYsxFKrarIcXHOiI1B97xr9/FQOQxL9y2ECsLqRiM4Y3yS87c8om7pBGy3g/750+e0h9V TL36Nnu6n57BMWV7bEEbF9MxkC8CPzc= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=xmission.com; spf=pass (imf25.hostedemail.com: domain of ebiederm@xmission.com designates 166.70.13.231 as permitted sender) smtp.mailfrom=ebiederm@xmission.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1734013370; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MqRaP6NHgBTc/Myf3oNdfD32UoCYzdt2X4DCHvv/yeg=; b=TXjhyrQNa8Bv7lRWql1nF73N5CzW8kbLcKaRQFpXSUvqrWmON+zWoj1y+HRhRL+fcKG6v0 f6WnAyTQ6/mK5OD4tH+9FErD3eWV7klTdhnK422lj7kIovgxWKyyTH43rjgM9UqGBVLOy3 A+iW+DSyAzfo6WLWhMVKq6Xq0+8T9g4= Received: from in01.mta.xmission.com ([166.70.13.51]:37672) by out01.mta.xmission.com with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1tLk5t-00BfnV-H5; Thu, 12 Dec 2024 07:23:09 -0700 Received: from ip72-198-198-28.om.om.cox.net ([72.198.198.28]:59852 helo=email.froward.int.ebiederm.org.xmission.com) by in01.mta.xmission.com with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1tLk5s-0070Kb-4n; Thu, 12 Dec 2024 07:23:09 -0700 From: "Eric W. Biederman" To: Hajime Tazaki Cc: linux-um@lists.infradead.org, ricarkol@google.com, Liam.Howlett@oracle.com, Kees Cook , Alexander Viro , Christian Brauner , Jan Kara , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org References: Date: Thu, 12 Dec 2024 08:22:47 -0600 In-Reply-To: (Hajime Tazaki's message of "Thu, 12 Dec 2024 19:12:09 +0900") Message-ID: <87r06d0ymg.fsf@email.froward.int.ebiederm.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-XM-SPF: eid=1tLk5s-0070Kb-4n;;;mid=<87r06d0ymg.fsf@email.froward.int.ebiederm.org>;;;hst=in01.mta.xmission.com;;;ip=72.198.198.28;;;frm=ebiederm@xmission.com;;;spf=pass X-XM-AID: U2FsdGVkX1/f/Wxjl/Fysr+iPoDi9zb/QsVJKuStryA= Subject: Re: [PATCH v5 02/13] x86/um: nommu: elf loader for fdpic X-SA-Exim-Connect-IP: 166.70.13.51 X-SA-Exim-Rcpt-To: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, jack@suse.cz, brauner@kernel.org, viro@zeniv.linux.org.uk, kees@kernel.org, Liam.Howlett@oracle.com, ricarkol@google.com, linux-um@lists.infradead.org, thehajime@gmail.com X-SA-Exim-Mail-From: ebiederm@xmission.com X-SA-Exim-Scanned: No (on out01.mta.xmission.com); SAEximRunCond expanded to false X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: A09E9A0002 X-Stat-Signature: fpi7u5qth9fspw88pdwboc6acoh8q6fp X-Rspam-User: X-HE-Tag: 1734013375-50008 X-HE-Meta: U2FsdGVkX1/QkpVQ7bBv93vX0dP6sfCZHULTxpV2UauB5pZvm8JkkZ8v0CQXd8/NBxBjkrA/qjiwL8Sp83kA29iNC9R8BN9FmDr8kCMEXbz7XlYhuSkHmmjOtNJGwrX2Thy5LsJOxdD3dgpXvLr7xZnbAtEwaY4dF8I8Iwvpr7fdOSQCLcK6B7S0/0A2zkc4ouwncW6IZY5GMQuKohmeyf/EoN9Np2NlaabJKCsyfteRQ/kgUia5ztfZgkB/Pz+YJkgXzKPzA5mRrdQ88KIPnLqVMlzlWb1/52pr8hCuSTyAA/+YY2c3BduYBP/h4Mis66mXS1h0fhqirTJrfqj3U4mAvp9EzXaxPIRfu/wIGR8w08T7EcGWtB9eV2x2GOHu0rQYk1j9u+1L84iN5Ind6tC+ov8fh7b4DcXd1EPIkNYh6UahnmTeQFgxzlHOBNc3xxuqiXf8A6ASxQBK/KcBR4bcBJyC180rmBDQnUBUw9Dm9qTU6FDHOF3SPkuCtAuIvO0N3DXv7uOLtlbrXvwjhWdjDXnd3OxeseNeljTmC/csJLKuGuoZWn5MjNtJzsAetxFuGFnA+0ezq6yf/OxsR7kgjno5bNFdqkILJMM59/lJFM5t/ctpy4FNC5eLVMytatEY8+xwtIzuET3B0h6H1QRjbIPD46PIVSY6nmF9zjTNT2hNbQCK1QLnwoMbRr7qBDs1CWqx8o+g3hmQIb19mjP/BZC6lVUPeWtmsY/F/Cmn8zPKfGW4ZWGAPZ94924YQQmkiLR2hTZJX0tWzDRkPCs8POS/PTquuoTmFihczqBR2FGJx761t44QgtjubWGaO9KSIFAotQoraNsw5aAxzYZ6XE49fCnMY+2CmMNJ2bGxmXKz015vubmG7HnNSrftFc4EWdHt4tkvlXuedNoUEE4jHxZE1TTNvebFLpIZITOWPgAIwPocM4m0SXWVqicWq4uQGZzPFaizcIxxGn1 zwFXjsa2 /zDt1udl9dqpkKKNk3VlQquZjSvLD0uDEh5W/nS4PPCwVg4hCepbx48mCuvtwhz7UwIkv8XpuV3gEg21GirGzMC1SD7mPoniSh8pVvERMLSJXG+K3VFXoh4slEengvT2pipF2ENknknC/XTd2JSEHX7SjXYeBAI5wXaZI4DizWLhCx67lU+9bGO3Och1YQMpzcbuu0wtx29SMyooXvTMMv/2aPC1S3PJ1oaB+ZQNyLTWgzcedqlWZz/S/XnzR1cnON/TybzeaMDsCyU8= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hajime Tazaki writes: > As UML supports CONFIG_MMU=n case, it has to use an alternate ELF > loader, FDPIC ELF loader. In this commit, we added necessary > definitions in the arch, as UML has not been used so far. It also > updates Kconfig file to use BINFMT_ELF_FDPIC under !MMU environment. Why does the no mmu case need an alternative elf loader? Last time I looked the regular binfmt_elf works just fine without an mmu. I looked again and at a quick skim the regular elf loader still looks like it will work without an MMU. You would need ET_DYN binaries just so they will load and run in a position independent way. But even that seems a common configuration even with a MMU these days. There are some funny things in elf_fdpic where it departs from the ELF standard and is no fun to support unless it is necessary. So I am not excited to see more architectures supporting ELF_FDPIC. Eric > Cc: Eric Biederman > Cc: Kees Cook > Cc: Alexander Viro > Cc: Christian Brauner > Cc: Jan Kara > Cc: linux-mm@kvack.org > Cc: linux-fsdevel@vger.kernel.org > Signed-off-by: Hajime Tazaki > Signed-off-by: Ricardo Koller > --- > arch/um/include/asm/mmu.h | 5 +++++ > arch/um/include/asm/ptrace-generic.h | 6 ++++++ > arch/x86/um/asm/elf.h | 8 ++++++-- > fs/Kconfig.binfmt | 2 +- > 4 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/arch/um/include/asm/mmu.h b/arch/um/include/asm/mmu.h > index a3eaca41ff61..01422b761aa0 100644 > --- a/arch/um/include/asm/mmu.h > +++ b/arch/um/include/asm/mmu.h > @@ -14,6 +14,11 @@ typedef struct mm_context { > /* Address range in need of a TLB sync */ > unsigned long sync_tlb_range_from; > unsigned long sync_tlb_range_to; > + > +#ifdef CONFIG_BINFMT_ELF_FDPIC > + unsigned long exec_fdpic_loadmap; > + unsigned long interp_fdpic_loadmap; > +#endif > } mm_context_t; > > #endif > diff --git a/arch/um/include/asm/ptrace-generic.h b/arch/um/include/asm/ptrace-generic.h > index 4696f24d1492..4ff844bcb1cd 100644 > --- a/arch/um/include/asm/ptrace-generic.h > +++ b/arch/um/include/asm/ptrace-generic.h > @@ -29,6 +29,12 @@ struct pt_regs { > > #define PTRACE_OLDSETOPTIONS 21 > > +#ifdef CONFIG_BINFMT_ELF_FDPIC > +#define PTRACE_GETFDPIC 31 > +#define PTRACE_GETFDPIC_EXEC 0 > +#define PTRACE_GETFDPIC_INTERP 1 > +#endif > + > struct task_struct; > > extern long subarch_ptrace(struct task_struct *child, long request, > diff --git a/arch/x86/um/asm/elf.h b/arch/x86/um/asm/elf.h > index 62ed5d68a978..33f69f1eac10 100644 > --- a/arch/x86/um/asm/elf.h > +++ b/arch/x86/um/asm/elf.h > @@ -9,6 +9,7 @@ > #include > > #define CORE_DUMP_USE_REGSET > +#define ELF_FDPIC_CORE_EFLAGS 0 > > #ifdef CONFIG_X86_32 > > @@ -190,8 +191,11 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, > > extern unsigned long um_vdso_addr; > #define AT_SYSINFO_EHDR 33 > -#define ARCH_DLINFO NEW_AUX_ENT(AT_SYSINFO_EHDR, um_vdso_addr) > - > +#define ARCH_DLINFO \ > +do { \ > + NEW_AUX_ENT(AT_SYSINFO_EHDR, um_vdso_addr); \ > + NEW_AUX_ENT(AT_MINSIGSTKSZ, 0); \ > +} while (0) > #endif > > typedef unsigned long elf_greg_t; > diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt > index bd2f530e5740..419ba0282806 100644 > --- a/fs/Kconfig.binfmt > +++ b/fs/Kconfig.binfmt > @@ -58,7 +58,7 @@ config ARCH_USE_GNU_PROPERTY > config BINFMT_ELF_FDPIC > bool "Kernel support for FDPIC ELF binaries" > default y if !BINFMT_ELF > - depends on ARM || ((M68K || RISCV || SUPERH || XTENSA) && !MMU) > + depends on ARM || ((M68K || RISCV || SUPERH || UML || XTENSA) && !MMU) > select ELFCORE > help > ELF FDPIC binaries are based on ELF, but allow the individual load