All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Sami Tolvanen <samitolvanen@google.com>,
	Alex Matveev <alxmtvv@gmail.com>, Andi Kleen <ak@linux.intel.com>,
	Greg Hackmann <ghackmann@google.com>,
	Kees Cook <keescook@chromium.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	linux-kbuild@vger.kernel.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>,
	Michal Marek <michal.lkml@markovi.net>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Yury Norov <ynorov@caviumnetworks.com>,
	Matthias Kaehlcke <mka@chromium.org>
Subject: Re: [PATCH v2 16/18] arm64: crypto: disable LTO for aes-ce-cipher.c
Date: Mon, 20 Nov 2017 15:25:31 +0000	[thread overview]
Message-ID: <CAKv+Gu-hnoeLqNsHbrLXv3xu7qsYB6REiwMtQYW_0CPwZ7jF4g@mail.gmail.com> (raw)
In-Reply-To: <20171120152014.hftuded4zxwn2r7m@lakrids.cambridge.arm.com>

On 20 November 2017 at 15:20, Mark Rutland <mark.rutland@arm.com> wrote:
> On Wed, Nov 15, 2017 at 01:34:26PM -0800, Sami Tolvanen wrote:
>> CONFIG_LTO_CLANG requires the use of clang's integrated assembler, which
>> doesn't understand the inline assembly in aes-ce-cipher.c. Disable LTO for
>> the file to work around the issue.
>
> Could you elaborate on what the integrated asembler doesn't like?
>
> It's not entirely clear at a glance, as the asm in that file doesn't
> seem to do anything that obscure.
>

Actually, it just occurred to me that this code does not adhere 100%
to the kernel mode neon rules, by putting kernel_neon_begin/end and
the code itself into the same source file. At the time, it seemed
harmless, given that these functions are only exposed via function
pointers and never called locally, and the compiler cannot really
reorder the function calls with the asm block. However, under LTO this
all changes, and it is no longer guaranteed that the NEON registers
are only touched between the kernel mode neon begin/end calls.

So the correct way to fix this would be to move the asm into its own
.S file, and call it from between the kernel_mode_neon_begin/end
calls. That should also fix your compat issue.

WARNING: multiple messages have this Message-ID (diff)
From: ard.biesheuvel@linaro.org (Ard Biesheuvel)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 16/18] arm64: crypto: disable LTO for aes-ce-cipher.c
Date: Mon, 20 Nov 2017 15:25:31 +0000	[thread overview]
Message-ID: <CAKv+Gu-hnoeLqNsHbrLXv3xu7qsYB6REiwMtQYW_0CPwZ7jF4g@mail.gmail.com> (raw)
In-Reply-To: <20171120152014.hftuded4zxwn2r7m@lakrids.cambridge.arm.com>

On 20 November 2017 at 15:20, Mark Rutland <mark.rutland@arm.com> wrote:
> On Wed, Nov 15, 2017 at 01:34:26PM -0800, Sami Tolvanen wrote:
>> CONFIG_LTO_CLANG requires the use of clang's integrated assembler, which
>> doesn't understand the inline assembly in aes-ce-cipher.c. Disable LTO for
>> the file to work around the issue.
>
> Could you elaborate on what the integrated asembler doesn't like?
>
> It's not entirely clear at a glance, as the asm in that file doesn't
> seem to do anything that obscure.
>

Actually, it just occurred to me that this code does not adhere 100%
to the kernel mode neon rules, by putting kernel_neon_begin/end and
the code itself into the same source file. At the time, it seemed
harmless, given that these functions are only exposed via function
pointers and never called locally, and the compiler cannot really
reorder the function calls with the asm block. However, under LTO this
all changes, and it is no longer guaranteed that the NEON registers
are only touched between the kernel mode neon begin/end calls.

So the correct way to fix this would be to move the asm into its own
.S file, and call it from between the kernel_mode_neon_begin/end
calls. That should also fix your compat issue.

  reply	other threads:[~2017-11-20 15:25 UTC|newest]

Thread overview: 226+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-15 21:34 [PATCH v2 00/18] Add support for clang LTO Sami Tolvanen
2017-11-15 21:34 ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 01/18] kbuild: add ld-name macro and support for GNU gold Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:53   ` Kees Cook
2017-11-15 21:53     ` Kees Cook
2017-11-15 21:34 ` [PATCH v2 02/18] kbuild: fix LD_DEAD_CODE_DATA_ELIMINATION with " Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 03/18] kbuild: move gcc-version.sh to cc-version.sh and add clang support Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:48   ` Kees Cook
2017-11-15 21:48     ` Kees Cook
2017-11-15 22:06     ` Sami Tolvanen
2017-11-15 22:06       ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 04/18] arm64: use -mno-implicit-float instead of -mgeneral-regs-only Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 05/18] arm64: fix -m for GNU gold Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 10:55   ` Yury Norov
2017-11-16 10:55     ` Yury Norov
2017-11-16 16:55     ` Nick Desaulniers
2017-11-16 16:55       ` Nick Desaulniers
2017-11-15 21:34 ` [PATCH v2 06/18] arm64: kvm: use -fno-jump-tables with clang Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 11:46   ` Will Deacon
2017-11-16 11:46     ` Will Deacon
2017-11-16 16:25     ` Sami Tolvanen
2017-11-16 16:25       ` Sami Tolvanen
2017-11-20 14:41   ` Mark Rutland
2017-11-20 14:41     ` Mark Rutland
2017-11-20 14:43     ` Mark Rutland
2017-11-20 14:43       ` Mark Rutland
2017-11-20 14:47       ` Ard Biesheuvel
2017-11-20 14:47         ` Ard Biesheuvel
2017-11-20 14:47         ` Ard Biesheuvel
2017-11-15 21:34 ` [PATCH v2 07/18] arm64: keep .altinstructions and .altinstr_replacement Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 08/18] arm64: don't disable ADR_PREL_PG_HI21* with ARM64_ERRATUM_843419 Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 22:29   ` Ard Biesheuvel
2017-11-15 22:29     ` Ard Biesheuvel
2017-11-15 22:29     ` Ard Biesheuvel
2017-11-16 11:44     ` Will Deacon
2017-11-16 11:44       ` Will Deacon
2017-11-16 11:44       ` Will Deacon
2017-11-16 16:32       ` Sami Tolvanen
2017-11-16 16:32         ` Sami Tolvanen
2017-11-16 16:32         ` Sami Tolvanen
2017-11-16 16:34         ` Ard Biesheuvel
2017-11-16 16:34           ` Ard Biesheuvel
2017-11-16 16:34           ` Ard Biesheuvel
2017-11-16 21:37           ` Sami Tolvanen
2017-11-16 21:37             ` Sami Tolvanen
2017-11-16 21:37             ` Sami Tolvanen
2017-11-16 22:14             ` Ard Biesheuvel
2017-11-16 22:14               ` Ard Biesheuvel
2017-11-16 22:14               ` Ard Biesheuvel
2017-11-16 22:25               ` Ard Biesheuvel
2017-11-16 22:25                 ` Ard Biesheuvel
2017-11-16 22:25                 ` Ard Biesheuvel
2017-11-16 23:09               ` Sami Tolvanen
2017-11-16 23:09                 ` Sami Tolvanen
2017-11-16 23:09                 ` Sami Tolvanen
2017-11-16 23:20                 ` Ard Biesheuvel
2017-11-16 23:20                   ` Ard Biesheuvel
2017-11-16 23:20                   ` Ard Biesheuvel
2017-11-16 23:50                   ` Sami Tolvanen
2017-11-16 23:50                     ` Sami Tolvanen
2017-11-16 23:50                     ` Sami Tolvanen
2017-11-17  9:54                     ` Ard Biesheuvel
2017-11-17  9:54                       ` Ard Biesheuvel
2017-11-17  9:54                       ` Ard Biesheuvel
2017-11-17 18:49                       ` Sami Tolvanen
2017-11-17 18:49                         ` Sami Tolvanen
2017-11-17 18:49                         ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 09/18] arm64: explicitly pass --no-fix-cortex-a53-843419 to GNU gold Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 11:47   ` Will Deacon
2017-11-16 11:47     ` Will Deacon
2017-11-16 16:35     ` Sami Tolvanen
2017-11-16 16:35       ` Sami Tolvanen
2017-11-20 14:47       ` Mark Rutland
2017-11-20 14:47         ` Mark Rutland
2017-11-20 20:35         ` Sami Tolvanen
2017-11-20 20:35           ` Sami Tolvanen
2017-11-21 11:15           ` Mark Rutland
2017-11-21 11:15             ` Mark Rutland
2017-11-15 21:34 ` [PATCH v2 10/18] arm64: add a workaround for GNU gold with ARM64_MODULE_PLTS Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 11:50   ` Will Deacon
2017-11-16 11:50     ` Will Deacon
2017-11-16 16:41     ` Sami Tolvanen
2017-11-16 16:41       ` Sami Tolvanen
2017-11-16 18:47       ` Will Deacon
2017-11-16 18:47         ` Will Deacon
2017-11-15 21:34 ` [PATCH v2 11/18] arm64: make mrs_s and msr_s macros work with LTO Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 11:54   ` Will Deacon
2017-11-16 11:54     ` Will Deacon
2017-11-16 13:07     ` Yury Norov
2017-11-16 13:07       ` Yury Norov
2017-11-16 13:55       ` Robin Murphy
2017-11-16 13:55         ` Robin Murphy
2017-11-16 21:29         ` Yury Norov
2017-11-16 21:29           ` Yury Norov
2017-11-16 22:54           ` Alex Matveev
2017-11-16 22:54             ` Alex Matveev
2017-12-04 17:34             ` Nick Desaulniers
2017-12-04 17:34               ` Nick Desaulniers
2017-11-16 13:56       ` Segher Boessenkool
2017-11-16 13:56         ` Segher Boessenkool
2017-11-16 16:46         ` Sami Tolvanen
2017-11-16 16:46           ` Sami Tolvanen
2017-11-16 17:01           ` Segher Boessenkool
2017-11-16 17:01             ` Segher Boessenkool
2017-11-16 17:11             ` Sami Tolvanen
2017-11-16 17:11               ` Sami Tolvanen
2017-11-16 16:43     ` Sami Tolvanen
2017-11-16 16:43       ` Sami Tolvanen
2017-11-16 16:44       ` Nick Desaulniers
2017-11-16 16:44         ` Nick Desaulniers
2017-11-16 18:14     ` Alex Matveev
2017-11-16 18:14       ` Alex Matveev
2017-11-15 21:34 ` [PATCH v2 12/18] kbuild: add support for clang LTO Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 22:06   ` Kees Cook
2017-11-15 22:06     ` Kees Cook
2017-11-18  3:21   ` [v2,12/18] " Nicholas Piggin
2017-11-18  3:21     ` Nicholas Piggin
2017-11-20 20:21     ` Sami Tolvanen
2017-11-20 20:21       ` Sami Tolvanen
2017-11-21  1:01       ` Nicholas Piggin
2017-11-21  1:01         ` Nicholas Piggin
2017-11-29 23:30         ` Sami Tolvanen
2017-11-29 23:30           ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 13/18] kbuild: fix dynamic ftrace with " Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 14/18] scripts/mod: disable LTO for empty.c Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 15/18] efi/libstub: disable LTO Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 16/18] arm64: crypto: disable LTO for aes-ce-cipher.c Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-20 15:20   ` Mark Rutland
2017-11-20 15:20     ` Mark Rutland
2017-11-20 15:25     ` Ard Biesheuvel [this message]
2017-11-20 15:25       ` Ard Biesheuvel
2017-11-20 15:25       ` Ard Biesheuvel
2017-11-20 21:01       ` Sami Tolvanen
2017-11-20 21:01         ` Sami Tolvanen
2017-11-20 21:01         ` Sami Tolvanen
2017-11-21 11:47         ` Mark Rutland
2017-11-21 11:47           ` Mark Rutland
2017-11-21 11:47           ` Mark Rutland
2017-11-20 20:51     ` Sami Tolvanen
2017-11-20 20:51       ` Sami Tolvanen
2017-11-20 21:29     ` Alex Matveev
2017-11-20 21:29       ` Alex Matveev
2017-11-20 21:31       ` Ard Biesheuvel
2017-11-20 21:31         ` Ard Biesheuvel
2017-11-20 21:31         ` Ard Biesheuvel
2017-11-20 22:03         ` Alex Matveev
2017-11-20 22:03           ` Alex Matveev
2017-11-20 22:03           ` Alex Matveev
2017-11-15 21:34 ` [PATCH v2 17/18] arm64: disable RANDOMIZE_MODULE_REGION_FULL with LTO_CLANG Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-15 21:34 ` [PATCH v2 18/18] arm64: select ARCH_SUPPORTS_LTO_CLANG Sami Tolvanen
2017-11-15 21:34   ` Sami Tolvanen
2017-11-16 11:58   ` Will Deacon
2017-11-16 11:58     ` Will Deacon
2017-11-16 16:17     ` Sami Tolvanen
2017-11-16 16:17       ` Sami Tolvanen
2017-11-16 16:30       ` Peter Zijlstra
2017-11-16 16:30         ` Peter Zijlstra
2017-11-16 16:50         ` Nick Desaulniers
2017-11-16 16:50           ` Nick Desaulniers
2017-11-16 16:59           ` Peter Zijlstra
2017-11-16 16:59             ` Peter Zijlstra
2017-11-16 17:16             ` Nick Desaulniers
2017-11-16 17:16               ` Nick Desaulniers
2017-11-16 17:34               ` Peter Zijlstra
2017-11-16 17:34                 ` Peter Zijlstra
2017-11-16 17:48                 ` Paul E. McKenney
2017-11-16 17:48                   ` Paul E. McKenney
2017-11-16 18:16                   ` Nick Desaulniers
2017-11-16 18:16                     ` Nick Desaulniers
2017-11-16 18:39                     ` Paul E. McKenney
2017-11-16 18:39                       ` Paul E. McKenney
2017-11-16 18:45                       ` Will Deacon
2017-11-16 18:45                         ` Will Deacon
2017-11-16 19:13                         ` Paul E. McKenney
2017-11-16 19:13                           ` Paul E. McKenney
2017-11-16 20:17                           ` Sami Tolvanen
2017-11-16 20:17                             ` Sami Tolvanen
2017-11-20 18:05                             ` Will Deacon
2017-11-20 18:05                               ` Will Deacon
2017-11-20 19:25                               ` Peter Zijlstra
2017-11-20 19:25                                 ` Peter Zijlstra
2017-11-20 19:28                               ` Peter Zijlstra
2017-11-20 19:28                                 ` Peter Zijlstra
2017-11-20 20:52                                 ` Paul E. McKenney
2017-11-20 20:52                                   ` Paul E. McKenney
2017-11-20 19:32                               ` Peter Zijlstra
2017-11-20 19:32                                 ` Peter Zijlstra
2017-11-20 20:53                                 ` Paul E. McKenney
2017-11-20 20:53                                   ` Paul E. McKenney
2017-11-21 17:23                                   ` David Laight
2017-11-21 17:23                                     ` David Laight
2017-11-21 17:23                                     ` David Laight
2017-11-21 18:51                                     ` Paul E. McKenney
2017-11-21 18:51                                       ` Paul E. McKenney
2017-11-21 18:51                                       ` Paul E. McKenney
2017-11-23 13:42                     ` Alexander Potapenko
2017-11-23 13:42                       ` Alexander Potapenko
2017-11-24  7:52                       ` Dmitry Vyukov
2017-11-24  7:52                         ` Dmitry Vyukov
2017-11-16 20:53 ` [PATCH v2 00/18] Add support for clang LTO Yury Norov
2017-11-16 20:53   ` Yury Norov
2017-11-16 21:38   ` Sami Tolvanen
2017-11-16 21:38     ` Sami Tolvanen
2017-11-20 15:21 ` Mark Rutland
2017-11-20 15:21   ` Mark Rutland
2017-11-20 21:04   ` Sami Tolvanen
2017-11-20 21:04     ` Sami Tolvanen
2017-11-21 11:53     ` Mark Rutland
2017-11-21 11:53       ` Mark Rutland

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=CAKv+Gu-hnoeLqNsHbrLXv3xu7qsYB6REiwMtQYW_0CPwZ7jF4g@mail.gmail.com \
    --to=ard.biesheuvel@linaro.org \
    --cc=ak@linux.intel.com \
    --cc=alxmtvv@gmail.com \
    --cc=ghackmann@google.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maxim.kuvyrkov@linaro.org \
    --cc=michal.lkml@markovi.net \
    --cc=mka@chromium.org \
    --cc=ndesaulniers@google.com \
    --cc=samitolvanen@google.com \
    --cc=yamada.masahiro@socionext.com \
    --cc=ynorov@caviumnetworks.com \
    /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.