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 4B04AC10DCE for ; Wed, 6 Dec 2023 22:58:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B54B36B007B; Wed, 6 Dec 2023 17:58:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B04AA6B007D; Wed, 6 Dec 2023 17:58:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A59C6B007E; Wed, 6 Dec 2023 17:58:28 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 87E0D6B007B for ; Wed, 6 Dec 2023 17:58:28 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 507DCC0300 for ; Wed, 6 Dec 2023 22:58:28 +0000 (UTC) X-FDA: 81537909096.25.1B6FF93 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by imf09.hostedemail.com (Postfix) with ESMTP id 7DA51140008 for ; Wed, 6 Dec 2023 22:58:25 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=LU2b1p90; spf=pass (imf09.hostedemail.com: domain of keescook@chromium.org designates 209.85.210.173 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701903505; 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:dkim-signature; bh=rlRwxrjO/fwpJbdnxlIZRwQlN6+I20Mp4XVwBmKHsZs=; b=x5iGUmEsRn8Q2EmnkvWByowm86xWkjLfR0Qtp6AvKENaxsUJAMoP8VHlnhEwgC4ceEODYr xS5IrNH8Mahnn02qdanEydRl7QtiVmF5iwn8oIhalDCKheyPDaW6dhpkpXSrPK/r4Sr/Ir 3cwbBLr+hol0NjceMcHi8QTQptbiSeg= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=LU2b1p90; spf=pass (imf09.hostedemail.com: domain of keescook@chromium.org designates 209.85.210.173 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701903505; a=rsa-sha256; cv=none; b=zo+S9PeLktFAg/cSUfRt1rClri29Af5l0x/nmOOFTvb6s51mflCE0SLO8VIEk/vREvT04z atxgHSo+yMmwm2LlKaJcOp9gANRmK6jkMrP+WyaZVgZZk9SCYFU+PbD9ZtgF50g9T7p/s1 YoZQpAaWvDTW7srXM2wjFXzyTbmF+NM= Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-6ce72faf1e8so49652b3a.0 for ; Wed, 06 Dec 2023 14:58:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1701903504; x=1702508304; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=rlRwxrjO/fwpJbdnxlIZRwQlN6+I20Mp4XVwBmKHsZs=; b=LU2b1p90EC4I0xuum4qeDdIL1fs3AB4oN4GWHqyZDn5Gp/o2ESNHakuDwggl8x5oVe KF5Jv+ZinjaPwvtPMoZkZ7h996C5Fw5wo4UStdJmgmgmUarbkkTlRB7JaZT0VsT2tkmr +JKuJtDC21iLCm1nL6fd9zr+wbpmNE4sRxV0o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701903504; x=1702508304; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rlRwxrjO/fwpJbdnxlIZRwQlN6+I20Mp4XVwBmKHsZs=; b=VFfpyHNW1AwZh7T8+sI8G0O3Y72ZhzYFd1K/SOLMWjN+CG52rbwBmtaDTv06nhQeAa +SWhQ6Y+25p7HO8qIMHhztQXE79VBB+hdh0X01hd4xIfM6M97mLZLulQDfHGH5RXSm4d TqVMxMT+YNGFvw0MsU9z1d/Yvh3xliBIrN5iqxXQBvRuOPFfhhWQOBPoTYXd34j/DdY+ tHd6y/4ywR0m8n0xrE5pOWWrExRoaO8/eTQmIvigPu0/8eQv7kadtcpnrNi3p6u3qxfm IWgnNoo+kgs56pM1laeW1RcTLUi1f6jv9ZE/Ges8Av6aJc5Ethu3E3zTfBhv1aiJYYp/ RLlQ== X-Gm-Message-State: AOJu0YzqkJ2ulzkkH4pCEuL80ZlYiiIzC8dzptSKz/ZPw45+ZW06CS7c ytDoDKkUdc+mHHfA3s468w3plw== X-Google-Smtp-Source: AGHT+IF21TEfSUWNryCsppjMZp7UZtzSTndkR8MeQxDsRI0Vo9gwMzOLX3f62R0JkmE2aAtvmNiKUw== X-Received: by 2002:a05:6a21:6d9d:b0:18a:b5c3:55c1 with SMTP id wl29-20020a056a216d9d00b0018ab5c355c1mr1334523pzb.57.1701903504112; Wed, 06 Dec 2023 14:58:24 -0800 (PST) Received: from www.outflux.net (198-0-35-241-static.hfc.comcastbusiness.net. [198.0.35.241]) by smtp.gmail.com with ESMTPSA id t24-20020a17090ad51800b00286d44e0c59sm336823pju.36.2023.12.06.14.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 14:58:23 -0800 (PST) Date: Wed, 6 Dec 2023 14:58:23 -0800 From: Kees Cook To: Alexey Dobriyan Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Randy Dunlap , Bagas Sanjaya , Jonathan Corbet , Eric Biederman , linux-mm@kvack.org Subject: Re: [PATCH v3] ELF: document some de-facto PT_* ABI quirks Message-ID: <202312061456.2103DA1@keescook> References: <2acb586c-08a9-42d9-a41e-7986cc1383ea@p183> <87edp7jyu4.fsf@meer.lwn.net> <88d3f1bb-f4e0-4c40-9304-3843513a1262@p183> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <88d3f1bb-f4e0-4c40-9304-3843513a1262@p183> X-Rspamd-Queue-Id: 7DA51140008 X-Rspam-User: X-Stat-Signature: g5ejbz73jgyw55893rzmz4gbfiyt6gsr X-Rspamd-Server: rspam01 X-HE-Tag: 1701903505-726432 X-HE-Meta: U2FsdGVkX1+ULdD5i2nYHcOJOz4xkBn1AkGN/GiTmfFepy9yfAhdwijAazjMimasOvq/j3zw9JkTw8ihSozaqMTeHmwZ1EjS9QAodgxXKEzi1kJcZko6pudbc8DYCuWUyi2Wyu76VZB99SsCiIRu0XTPFAxCyldx2DucXCxQdhLE1evNbruoVX4Iu7Hczf4nLXUhHRL/6HkhMZL3jeXfEBESD8WDNjjZoTx5wgsWuQgLiuOq+shE9jgVA1KFecc+fowEdFV+sTNuvif4schyWRr0MDXuHSog16QE6JYx89iok2ZR5dstHD8Lt+xEz1d4KYcgCEBbdOSDTpchlS3ppIHMhcasS+066V2vb/irSjeeiqborNtGrq6niwyl08jUlLs3uVW3xLhi53QVjC747fQX+THkLCP6kWj5CQPVRPGYFCOA8uidtHVd/oxZATPAwEJIjn2VKXEwaB4fb9wr0K2WRZp/fiNW0f6h82Tlm1t4s2+ycpRMkVr/7ZC3ShhWkWAI0ubQwZWEguKif5X9TgU9xHi7uuaIZOIbCbeXAfhK5k6Y3EnxNrgar5jzCrdqy7aCdN3u61tBd9o0CTPms4UEa6NShPRSPCPyykj60g6rvUaTHynOHZ6Ed4gtbNNCoSwXcxZHYhyL6XrxzbWIDuTCL2LGBAoIrscYAsg10lIzjcl2PAujfNQj5Gv7Hra+a/siVFposrOIkkXBPyv3VLMmriWT3MECXUJSPUm0RKodD7xTSINUm6PmtNZVg9QflNQkh913ATAJJ/Vhdl1EUeTc6GkhxCUGu98vi7Ff4PN7zQdVZqD23aPrmgJ6WjZCQJv9I1d9Mx5gAEMIZeDAMBYyUAB5STGULVDnzbd5ktfGuC7+zF4iT35WS3msazdNwnXR+HkUZZ1WBIs+bTwifugAo/LtgKO6eYZcEwIo8+udaKlGCybMttbIaWrxG4+O8InLzrUteKEQpXv59ts Vp5ndeys 67XH1sqW1Zh6Gz+NwzjnQMigddntSPmsoctENQurnr4ohEt8Kjpw33p9qHJp3RRklG5ZshqqGc5W+CXzeftly/fFw2V9Ht4a5JK/xGR8ROX7qa/dgEvqrfpPLoMoaLH0IUAVT0R0nU899HP+G6li0VcETzsnmT+dLr8u+yvK9QBjkuuxqMaQkc4d/4UIu5YaBZ9a8a5sDCRTfHF7k62484zpAhiYHQEZWl1gOMdQG7lFYj7/ApoOZ440HVV82Bu2wPKb1ZNVR4Gd3DrpbmTnWFxN28R+8ugoQbmDINLToxDc1w9kzJjhxceVVNVFuaFc1sgLMKTfK+10C7Ks1vmABl2qtcGZn8I+Nhw3okmnNVnQ0SVp+vqpWOsq7smi6zbgCC1SZdWWrX/p5D0pIdx7N2Pi6PX86TSmezA8jTWj0avUijwg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: *thread necromancy* Question below... On Sat, Apr 15, 2023 at 08:37:29PM +0300, Alexey Dobriyan wrote: > Turns out rules about PT_INTERP, PT_GNU_STACK and PT_GNU_PROPERTY > program headers are slightly different. > > Signed-off-by: Alexey Dobriyan > --- > > v3: move to Documentation/userspace-api/ > v2: integrate into documentation build system > > Documentation/userspace-api/ELF.rst | 34 ++++++++++++++++++++++++++++++++++ > Documentation/userspace-api/index.rst | 1 + > 2 files changed, 35 insertions(+) > > new file mode 100644 > --- /dev/null > +++ b/Documentation/userspace-api/ELF.rst > @@ -0,0 +1,34 @@ > +.. SPDX-License-Identifier: GPL-2.0 > + > +================================= > +Linux-specific ELF idiosyncrasies > +================================= > + > +Definitions > +=========== > + > +"First" program header is the one with the smallest offset in the file: > +e_phoff. > + > +"Last" program header is the one with the biggest offset in the file: > +e_phoff + (e_phnum - 1) * sizeof(Elf_Phdr). > + > +PT_INTERP > +========= > + > +First PT_INTERP program header is used to locate the filename of ELF > +interpreter. Other PT_INTERP headers are ignored (since Linux 2.4.11). > + > +PT_GNU_STACK > +============ > + > +Last PT_GNU_STACK program header defines userspace stack executability > +(since Linux 2.6.6). Other PT_GNU_STACK headers are ignored. > + > +PT_GNU_PROPERTY > +=============== > + > +ELF interpreter's last PT_GNU_PROPERTY program header is used (since > +Linux 5.8). If interpreter doesn't have one, then the last PT_GNU_PROPERTY > +program header of an executable is used. Other PT_GNU_PROPERTY headers > +are ignored. Should we perhaps solve some of these in some way? What would folks prefer the behaviors be? (I like to have things been "as expected", but it's not very obvious here for redundant headers...) -- Kees Cook