All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Lukas Wunner <lukas@wunner.de>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	 Linux Crypto Mailing List <linux-crypto@vger.kernel.org>,
	Julia Lawall <julia.lawall@inria.fr>,
	 Nicolas Palix <nicolas.palix@imag.fr>,
	cocci@inria.fr
Subject: Re: [GIT PULL] Crypto Update for 6.10
Date: Tue, 14 May 2024 10:07:02 -0700	[thread overview]
Message-ID: <CAHk-=whRK3wdMoUd7UOL-R8GcfwYYLsy26ft-kHv5WaofyYe=Q@mail.gmail.com> (raw)
In-Reply-To: <ZkMKvAnyOR3_cJnS@wunner.de>

On Mon, 13 May 2024 at 23:54, Lukas Wunner <lukas@wunner.de> wrote:
>
> On Mon, May 13, 2024 at 03:12:53PM -0700, Linus Torvalds wrote:
> >
> > > https://lore.kernel.org/all/202404252210.KJE6Uw1h-lkp@intel.com/
> >
> > looks *very* much like the cases we've seen with clang in particular
> > where clang goes "this code isn't reachable, so I'll just drop
> > everything on the floor", and then it just becomes a fallthrough to
> > whatever else code happens to come next. Most of the time that's just
> > more (unrelated) code in the same function, but sometimes it causes
> > that "falls through to next function" instead, entirely randomly
> > depending on how the code was laid out.
>
> Curiously, this particular 0-day report is for gcc 13.2.0 though,
> not clang.

Hmm. I think all the previous reports of "falls through to next
function" that I have seen have been with clang, but that is probably
be selection bias: the gcc cases of this tend to be found so much more
quickly (because gcc is still more common at least on x86) that by the
time I see the reports, it's because of some clang issue.

And in fact, when I go test this theory by going to search on lore, I
do see several gcc reports.

So no, it was never just clang-only, it was just that the ones I had
looked at were about clang.

> The assume() macro had no effect with clang when I tested it.

I suspect that the issue is that with *normal* kernel configurations,
the code generation is simple and straightforward enough that gcc did
the right thing.

And then some more complicated setup with more debugging support
enabled (particularly things like UBSAN or KASAN) the code gets
complicated enough that gcc doesn't do the optimization any more, and
then the conditional in assume() doesn't get optimized away at an
early stage any more, and remains as a conditional branch to
la-la-land.

And you actually don't even see this as a warning unless the
la-la-land happens to be at the end of a function. IOW, the "branch to
nowhere" _could_ just branch to some label inside the function, and
the objtool sanity check would never even have triggered.

That's why "unreachable()" can be so dangerous. It tells the compiler
that code generation in one place no longer matters, and then the
compiler can decide to leave things just dangling in odd ways.

The code presumably still *works* - because the actual conditional
never triggers, so in that sense it's safe and fine. But it's still
just horrendous to try to figure out, which is why I was so down on
it.

              Linus

  reply	other threads:[~2024-05-14 17:07 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-03  4:40 [GIT PULL] Crypto Update for 5.9 Herbert Xu
2020-08-03 17:55 ` pr-tracker-bot
2020-08-30 22:33 ` [GIT PULL] Crypto Fixes " Herbert Xu
2020-08-30 23:02   ` pr-tracker-bot
2020-09-10  0:34   ` Herbert Xu
2020-09-10  2:48     ` pr-tracker-bot
2020-10-26  1:11   ` [GIT PULL] Crypto Fixes for 5.10 Herbert Xu
2020-10-26 17:52     ` pr-tracker-bot
2020-12-27 11:32     ` [GIT PULL] Crypto Fixes for 5.11 Herbert Xu
2020-12-27 17:27       ` pr-tracker-bot
2021-01-08  3:54       ` Herbert Xu
2021-01-08 20:36         ` pr-tracker-bot
2021-01-18  5:13         ` Herbert Xu
2021-01-18 21:16           ` pr-tracker-bot
2021-01-25 22:36           ` Herbert Xu
2021-01-26  0:01             ` pr-tracker-bot
2021-07-08  3:09         ` [GIT PULL] Crypto Fixes for 5.14 Herbert Xu
2021-07-09 19:20           ` pr-tracker-bot
2021-08-17  1:36           ` Herbert Xu
2021-08-17  2:27             ` pr-tracker-bot
2021-09-29  2:38             ` [GIT PULL] Crypto Fixes for 5.15 Herbert Xu
2021-09-29 14:51               ` pr-tracker-bot
2021-10-29  4:14               ` Herbert Xu
2021-10-29 17:39                 ` Linus Torvalds
2021-11-02  4:01                   ` Herbert Xu
2021-10-29 18:49                 ` pr-tracker-bot
2021-11-12 10:48                 ` [GIT PULL] Crypto Fixes for 5.16 Herbert Xu
2021-11-12 20:42                   ` pr-tracker-bot
2021-12-22  5:13                   ` Herbert Xu
2021-12-22 19:02                     ` pr-tracker-bot
2022-02-09  2:33                     ` [GIT PULL] Crypto Fixes for 5.17 Herbert Xu
2022-02-09 18:01                       ` pr-tracker-bot
2022-03-16  1:13                       ` Herbert Xu
2022-03-17 20:40                         ` pr-tracker-bot
2022-03-31  3:16                         ` [GIT PULL] Crypto Fixes for 5.18 Herbert Xu
2022-03-31 19:12                           ` pr-tracker-bot
2022-05-20  5:41                           ` Herbert Xu
2022-05-20  6:10                             ` pr-tracker-bot
2022-05-27 11:29                           ` [GIT PULL] Crypto Fixes for 5.19 Herbert Xu
2022-05-28  1:21                             ` pr-tracker-bot
2022-06-17  8:29                             ` Herbert Xu
2022-06-17 15:29                               ` pr-tracker-bot
2022-06-30  7:56                               ` Herbert Xu
2022-06-30 17:28                                 ` pr-tracker-bot
2022-08-31  8:55                                 ` [GIT PULL] Crypto Fixes for 6.0 Herbert Xu
2022-08-31 17:20                                   ` pr-tracker-bot
2022-10-17  4:38                                 ` [GIT PULL] Crypto Fixes for 6.1 Herbert Xu
2022-10-17 17:51                                   ` pr-tracker-bot
2022-10-28  4:58                                   ` Herbert Xu
2022-10-28 17:00                                     ` Linus Torvalds
2022-11-02  9:49                                       ` Herbert Xu
2022-10-28 17:02                                     ` pr-tracker-bot
2023-01-06  9:15                                     ` [GIT PULL] Crypto Fixes for 6.2 Herbert Xu
2023-01-06 21:19                                       ` pr-tracker-bot
2023-03-05 10:15                                       ` [GIT PULL] Crypto Fixes for 6.3 Herbert Xu
2023-03-05 19:37                                         ` pr-tracker-bot
2023-05-07 13:19                                         ` [GIT PULL] Crypto Fixes for 6.4 Herbert Xu
2023-05-07 18:12                                           ` pr-tracker-bot
2023-05-29  3:41                                           ` Herbert Xu
2023-05-29 11:39                                             ` pr-tracker-bot
2023-07-09 23:51                                             ` [GIT PULL] Crypto Fixes for 6.5 Herbert Xu
2023-07-10 17:20                                               ` pr-tracker-bot
2023-08-21  3:37                                               ` Herbert Xu
2023-08-21  5:09                                                 ` pr-tracker-bot
2023-08-31  5:16                                                 ` [GIT PULL] Crypto Fixes for 6.6 Herbert Xu
2023-09-01 23:19                                                   ` pr-tracker-bot
2023-09-22  2:10                                                   ` Herbert Xu
2023-09-22 16:43                                                     ` pr-tracker-bot
2023-10-10  8:46                                                     ` Herbert Xu
2023-10-10 18:54                                                       ` pr-tracker-bot
2023-10-21  9:23                                                       ` Herbert Xu
2023-10-21 17:57                                                         ` pr-tracker-bot
2023-11-09  4:30                                                   ` [GIT PULL] Crypto Fixes for 6.7 Herbert Xu
2023-11-10  1:30                                                     ` pr-tracker-bot
2022-08-02  6:05                             ` [GIT PULL] Crypto Update for 5.20 Herbert Xu
2022-08-03  0:57                               ` pr-tracker-bot
2022-10-04  8:54                               ` [GIT PULL] Crypto Update for 6.1 Herbert Xu
2022-10-10 20:56                                 ` pr-tracker-bot
2022-12-14  8:15                                 ` [GIT PULL] Crypto Update for 6.2 Herbert Xu
2022-12-14 22:25                                   ` pr-tracker-bot
2023-02-20  5:22                                   ` [GIT PULL] Crypto Update for 6.3 Herbert Xu
2023-02-22  2:50                                     ` pr-tracker-bot
2023-04-24  4:52                                     ` [GIT PULL] Crypto Update for 6.4 Herbert Xu
2023-04-26 17:06                                       ` pr-tracker-bot
2023-06-29  5:06                                       ` [GIT PULL] Crypto Update for 6.5 Herbert Xu
2023-07-01  5:04                                         ` pr-tracker-bot
2023-08-28  9:22                                         ` [GIT PULL] Crypto Update for 6.6 Herbert Xu
2023-08-29 19:00                                           ` pr-tracker-bot
2023-11-02  6:56                                           ` [GIT PULL] Crypto Update for 6.7 Herbert Xu
2023-11-03  2:34                                             ` Linus Torvalds
2023-11-03  5:52                                               ` Herbert Xu
2023-11-03  6:32                                                 ` Linus Torvalds
2023-11-06 10:00                                                   ` [PATCH] crypto: jitterentropy - Hide esoteric Kconfig options under FIPS and EXPERT Herbert Xu
2023-11-06 15:25                                                     ` Stephan Mueller
2023-11-10  9:04                                                     ` Geert Uytterhoeven
2023-11-03  2:37                                             ` [GIT PULL] Crypto Update for 6.7 pr-tracker-bot
2024-01-09 22:17                                             ` [GIT PULL] Crypto Update for 6.8 Herbert Xu
2024-01-10 20:38                                               ` pr-tracker-bot
2024-02-01  5:32                                               ` [GIT PULL] Crypto Fixes " Herbert Xu
2024-02-01 18:23                                                 ` pr-tracker-bot
2024-02-08  4:29                                                 ` Herbert Xu
2024-02-08  6:24                                                   ` pr-tracker-bot
2024-02-21  9:10                                                   ` Herbert Xu
2024-02-21 17:17                                                     ` pr-tracker-bot
2024-02-28  8:07                                                     ` Herbert Xu
2024-02-28 17:48                                                       ` pr-tracker-bot
2024-03-06  9:47                                                       ` Herbert Xu
2024-03-06 16:33                                                         ` pr-tracker-bot
2024-03-25  9:47                                                 ` [GIT PULL] Crypto Fixes for 6.9 Herbert Xu
2024-03-25 18:18                                                   ` pr-tracker-bot
2024-05-20  3:26                                                   ` [GIT PULL] Crypto Fixes for 6.10 Herbert Xu
2024-05-20 16:33                                                     ` pr-tracker-bot
2024-05-29  4:17                                                     ` Herbert Xu
2024-05-29 17:11                                                       ` pr-tracker-bot
2024-03-15  3:04                                               ` [GIT PULL] Crypto Update for 6.9 Herbert Xu
2024-03-15 21:51                                                 ` Linus Torvalds
2024-03-16  4:39                                                   ` Herbert Xu
2024-03-15 21:59                                                 ` pr-tracker-bot
2024-05-13  3:50                                                 ` [GIT PULL] Crypto Update for 6.10 Herbert Xu
2024-05-13 22:12                                                   ` Linus Torvalds
2024-05-14  5:17                                                     ` Herbert Xu
2024-05-14  5:41                                                       ` Linus Torvalds
2024-05-14  6:02                                                         ` Herbert Xu
2024-05-14  6:54                                                     ` Lukas Wunner
2024-05-14 17:07                                                       ` Linus Torvalds [this message]
2024-05-13 22:38                                                   ` pr-tracker-bot
2020-10-12  3:32 ` [GIT PULL] Crypto Update for 5.10 Herbert Xu
2020-10-13 16:24   ` pr-tracker-bot
2020-12-14  5:55   ` [GIT PULL] Crypto Update for 5.11 Herbert Xu
2020-12-14 20:56     ` pr-tracker-bot
2021-02-15  2:47     ` [GIT PULL] Crypto Update for 5.12 Herbert Xu
2021-02-22  1:28       ` pr-tracker-bot
2021-04-26 12:32       ` [GIT PULL] Crypto Update for 5.13 Herbert Xu
2021-04-26 15:59         ` pr-tracker-bot
2021-06-28 11:00         ` [GIT PULL] Crypto Update for 5.14 Herbert Xu
2021-06-28 23:36           ` pr-tracker-bot
2021-08-30  8:28           ` [GIT PULL] Crypto Update for 5.15 Herbert Xu
2021-08-30 20:17             ` pr-tracker-bot
2021-11-02  3:52             ` [GIT PULL] Crypto Update for 5.16 Herbert Xu
2021-11-02  4:27               ` pr-tracker-bot
2022-01-11  2:04               ` [GIT PULL] Crypto Update for 5.17 Herbert Xu
2022-01-11 20:53                 ` pr-tracker-bot
2022-03-20 23:42                 ` [GIT PULL] Crypto Update for 5.18 Herbert Xu
2022-03-21 23:14                   ` Linus Torvalds
2022-03-22  5:49                     ` Herbert Xu
2022-03-21 23:18                   ` pr-tracker-bot

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='CAHk-=whRK3wdMoUd7UOL-R8GcfwYYLsy26ft-kHv5WaofyYe=Q@mail.gmail.com' \
    --to=torvalds@linux-foundation.org \
    --cc=cocci@inria.fr \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=julia.lawall@inria.fr \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=nicolas.palix@imag.fr \
    /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.