All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: "Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>
Cc: Arvind Sankar <nivedita@alum.mit.edu>,
	Florian Weimer <fw@deneb.enyo.de>,
	kernel-hardening@lists.openwall.com, linux-api@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-fsdevel@vger.kernel.org, linux-integrity@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-security-module@vger.kernel.org, oleg@redhat.com,
	x86@kernel.org, libffi-discuss@sourceware.org, luto@kernel.org,
	David.Laight@ACULAB.COM, mark.rutland@arm.com, mic@digikod.net
Subject: Re: [PATCH v2 0/4] [RFC] Implement Trampoline File Descriptor
Date: Fri, 25 Sep 2020 00:13:42 +0200	[thread overview]
Message-ID: <20200924221342.GB13185@amd> (raw)
In-Reply-To: <2ed2becd-49b5-7e76-9836-6a43707f539f@linux.microsoft.com>

[-- Attachment #1: Type: text/plain, Size: 1644 bytes --]

Hi!

> PC-relative data referencing
> ----------------------------
> 
> I agree that the current PC value can be loaded in a GPR using the trick
> of call, pop on i386.
> 
> Perhaps, on other architectures, we can do similar things. For instance,
> in architectures that load the return address in a designated register
> instead of pushing it on the stack, the trampoline could call a leaf function
> that moves the value of that register into data_reg so that at the location
> after the call instruction, the current PC is already loaded in data_reg.
> SPARC is one example I can think of.
> 
> My take is - if the ISA supports PC-relative data referencing explicitly (like
> X64 or ARM64), then we can use it. Or, if the ABI specification documents an
> approved way to load the PC into a GPR, we can use it.
> 
> Otherwise, using an ABI quirk or a calling convention side effect to load the
> PC into a GPR is, IMO, non-standard or non-compliant or non-approved or
> whatever you want to call it. I would be conservative and not use

ISAs are very well defined, and basically not changing. If you want to
argue we should not use something, you should have very clear picture
_why_ it is bad. "Non-standard or non-approved or whatever" just does
not cut it.

And yes, certain tricks may be seriously slow on modern CPUs, and we
might want to avoid those. But other than that... you should have
better argument than "it is non-standard".

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Pavel Machek <pavel@ucw.cz>
To: "Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>
Cc: mark.rutland@arm.com, linux-security-module@vger.kernel.org,
	kernel-hardening@lists.openwall.com, linux-api@vger.kernel.org,
	x86@kernel.org, linux-kernel@vger.kernel.org, oleg@redhat.com,
	mic@digikod.net, Arvind Sankar <nivedita@alum.mit.edu>,
	Florian Weimer <fw@deneb.enyo.de>,
	luto@kernel.org, linux-fsdevel@vger.kernel.org,
	linux-integrity@vger.kernel.org, David.Laight@ACULAB.COM,
	libffi-discuss@sourceware.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 0/4] [RFC] Implement Trampoline File Descriptor
Date: Fri, 25 Sep 2020 00:13:42 +0200	[thread overview]
Message-ID: <20200924221342.GB13185@amd> (raw)
In-Reply-To: <2ed2becd-49b5-7e76-9836-6a43707f539f@linux.microsoft.com>


[-- Attachment #1.1: Type: text/plain, Size: 1644 bytes --]

Hi!

> PC-relative data referencing
> ----------------------------
> 
> I agree that the current PC value can be loaded in a GPR using the trick
> of call, pop on i386.
> 
> Perhaps, on other architectures, we can do similar things. For instance,
> in architectures that load the return address in a designated register
> instead of pushing it on the stack, the trampoline could call a leaf function
> that moves the value of that register into data_reg so that at the location
> after the call instruction, the current PC is already loaded in data_reg.
> SPARC is one example I can think of.
> 
> My take is - if the ISA supports PC-relative data referencing explicitly (like
> X64 or ARM64), then we can use it. Or, if the ABI specification documents an
> approved way to load the PC into a GPR, we can use it.
> 
> Otherwise, using an ABI quirk or a calling convention side effect to load the
> PC into a GPR is, IMO, non-standard or non-compliant or non-approved or
> whatever you want to call it. I would be conservative and not use

ISAs are very well defined, and basically not changing. If you want to
argue we should not use something, you should have very clear picture
_why_ it is bad. "Non-standard or non-approved or whatever" just does
not cut it.

And yes, certain tricks may be seriously slow on modern CPUs, and we
might want to avoid those. But other than that... you should have
better argument than "it is non-standard".

Best regards,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-09-24 22:13 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <210d7cd762d5307c2aa1676705b392bd445f1baa>
2020-09-16 15:08 ` [PATCH v2 0/4] [RFC] Implement Trampoline File Descriptor madvenka
2020-09-16 15:08   ` madvenka
2020-09-16 15:08   ` [PATCH v2 1/4] [RFC] fs/trampfd: Implement the trampoline file descriptor API madvenka
2020-09-16 15:08     ` madvenka
2020-09-16 15:08   ` [PATCH v2 2/4] [RFC] x86/trampfd: Provide support for the trampoline file descriptor madvenka
2020-09-16 15:08     ` madvenka
2020-09-17  1:10     ` kernel test robot
2020-09-17  3:04     ` kernel test robot
2020-09-16 15:08   ` [PATCH v2 3/4] [RFC] arm64/trampfd: " madvenka
2020-09-16 15:08     ` madvenka
2020-09-16 15:08   ` [PATCH v2 4/4] [RFC] arm/trampfd: " madvenka
2020-09-16 15:08     ` madvenka
2020-09-17  1:04   ` [PATCH v2 0/4] [RFC] Implement Trampoline File Descriptor Florian Weimer
2020-09-17  1:04     ` Florian Weimer
2020-09-17  1:04     ` Florian Weimer
2020-09-17 15:36     ` Madhavan T. Venkataraman
2020-09-17 15:36       ` Madhavan T. Venkataraman
2020-09-17 15:57       ` Madhavan T. Venkataraman
2020-09-17 15:57         ` Madhavan T. Venkataraman
2020-09-17 16:01         ` Florian Weimer
2020-09-17 16:01           ` Florian Weimer
2020-09-17 16:01           ` Florian Weimer
2020-09-23  1:46       ` Arvind Sankar
2020-09-23  1:46         ` Arvind Sankar
2020-09-23  9:11         ` Arvind Sankar
2020-09-23  9:11           ` Arvind Sankar
2020-09-23 19:17           ` Madhavan T. Venkataraman
2020-09-23 19:17             ` Madhavan T. Venkataraman
2020-09-23 19:51             ` Arvind Sankar
2020-09-23 19:51               ` Arvind Sankar
2020-09-23 23:51               ` Madhavan T. Venkataraman
2020-09-23 23:51                 ` Madhavan T. Venkataraman
2020-09-24 20:23               ` Madhavan T. Venkataraman
2020-09-24 20:23                 ` Madhavan T. Venkataraman
2020-09-24 20:52                 ` Florian Weimer
2020-09-24 20:52                   ` Florian Weimer
2020-09-24 20:52                   ` Florian Weimer
2020-09-25 22:22                   ` Madhavan T. Venkataraman
2020-09-25 22:22                     ` Madhavan T. Venkataraman
2020-09-27 18:25                     ` Madhavan T. Venkataraman
2020-09-27 18:25                       ` Madhavan T. Venkataraman
2020-10-03  9:43                       ` Jay K
2020-10-03  9:43                         ` Jay K
2020-09-24 22:13                 ` Pavel Machek [this message]
2020-09-24 22:13                   ` Pavel Machek
2020-09-24 23:43                 ` Arvind Sankar
2020-09-24 23:43                   ` Arvind Sankar
2020-09-25 22:44                   ` Madhavan T. Venkataraman
2020-09-25 22:44                     ` Madhavan T. Venkataraman
2020-09-26 15:55                     ` Arvind Sankar
2020-09-26 15:55                       ` Arvind Sankar
2020-09-27 17:59                       ` Madhavan T. Venkataraman
2020-09-27 17:59                         ` Madhavan T. Venkataraman
2020-09-23  2:50       ` Jay K
2020-09-23  2:50         ` Jay K
2020-09-22 21:53 ` madvenka
2020-09-22 21:53   ` madvenka
2020-09-22 21:53   ` [PATCH v2 1/4] [RFC] fs/trampfd: Implement the trampoline file descriptor API madvenka
2020-09-22 21:53     ` madvenka
2020-09-22 21:53   ` [PATCH v2 2/4] [RFC] x86/trampfd: Provide support for the trampoline file descriptor madvenka
2020-09-22 21:53     ` madvenka
2020-09-23 13:40     ` kernel test robot
2020-09-22 21:53   ` [PATCH v2 3/4] [RFC] arm64/trampfd: " madvenka
2020-09-22 21:53     ` madvenka
2020-09-22 21:53   ` [PATCH v2 4/4] [RFC] arm/trampfd: " madvenka
2020-09-22 21:53     ` madvenka
2020-09-22 21:54   ` [PATCH v2 0/4] [RFC] Implement Trampoline File Descriptor Madhavan T. Venkataraman
2020-09-22 21:54     ` Madhavan T. Venkataraman
2020-09-23  8:14   ` Pavel Machek
2020-09-23  8:14     ` Pavel Machek
2020-09-23  9:14     ` Solar Designer
2020-09-23  9:14       ` Solar Designer
2020-09-23 14:11       ` Solar Designer
2020-09-23 14:11         ` Solar Designer
2020-09-23 15:18         ` Pavel Machek
2020-09-23 15:18           ` Pavel Machek
2020-09-23 18:00           ` Solar Designer
2020-09-23 18:00             ` Solar Designer
2020-09-23 18:21             ` Solar Designer
2020-09-23 18:21               ` Solar Designer
2020-09-23 14:39       ` Florian Weimer
2020-09-23 14:39         ` Florian Weimer
2020-09-23 14:39         ` Florian Weimer
2020-09-23 18:09         ` Andy Lutomirski
2020-09-23 18:09           ` Andy Lutomirski
2020-09-23 18:11         ` Solar Designer
2020-09-23 18:11           ` Solar Designer
2020-09-23 18:49           ` Arvind Sankar
2020-09-23 18:49             ` Arvind Sankar
2020-09-23 23:53         ` Madhavan T. Venkataraman
2020-09-23 23:53           ` Madhavan T. Venkataraman
2020-09-23 19:41       ` Madhavan T. Venkataraman
2020-09-23 19:41         ` Madhavan T. Venkataraman
2020-09-23 18:10     ` James Morris
2020-09-23 18:10       ` James Morris
2020-09-23 18:32     ` Madhavan T. Venkataraman
2020-09-23 18:32       ` Madhavan T. Venkataraman
2020-09-23  8:42   ` Pavel Machek
2020-09-23  8:42     ` Pavel Machek
2020-09-23 18:56     ` Madhavan T. Venkataraman
2020-09-23 18:56       ` Madhavan T. Venkataraman
2020-09-23 20:51       ` Pavel Machek
2020-09-23 20:51         ` Pavel Machek
2020-09-23 23:04         ` Madhavan T. Venkataraman
2020-09-23 23:04           ` Madhavan T. Venkataraman
2020-09-24 16:44         ` Mickaël Salaün
2020-09-24 16:44           ` Mickaël Salaün
2020-09-24 22:05           ` Pavel Machek
2020-09-24 22:05             ` Pavel Machek
2020-09-25 10:12             ` Mickaël Salaün
2020-09-25 10:12               ` Mickaël Salaün

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200924221342.GB13185@amd \
    --to=pavel@ucw.cz \
    --cc=David.Laight@ACULAB.COM \
    --cc=fw@deneb.enyo.de \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=libffi-discuss@sourceware.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=madvenka@linux.microsoft.com \
    --cc=mark.rutland@arm.com \
    --cc=mic@digikod.net \
    --cc=nivedita@alum.mit.edu \
    --cc=oleg@redhat.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.