* [GIT PULL] hardening fixes for v6.16-rc1
@ 2025-05-31 15:00 Kees Cook
2025-05-31 18:20 ` Linus Torvalds
0 siblings, 1 reply; 19+ messages in thread
From: Kees Cook @ 2025-05-31 15:00 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-kernel, Eric Biggers, Ingo Saitz, Kees Cook,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
Hi Linus,
Please pull this small handful of hardening fixes for v6.16-rc1.
Thanks!
-Kees
The following changes since commit f8b59a0f90a2adfce5a9206ce5589ed0dc19543c:
Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core (2025-05-29 09:11:39 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git tags/hardening-v6.16-rc1-fix1
for you to fetch changes up to 7ea1ca94c1278615c55a9f61f63d2286b1b10853:
randstruct: gcc-plugin: Fix attribute addition (2025-05-31 07:51:14 -0700)
----------------------------------------------------------------
hardening fixes for v6.16-rc1
- randstruct: gcc-plugin: Fix attribute addition with GCC 15
- ubsan: integer-overflow: depend on BROKEN to keep this out of CI
- overflow: Introduce __DEFINE_FLEX for having no initializer
- wifi: iwlwifi: mld: Work around Clang loop unrolling bug
----------------------------------------------------------------
Kees Cook (4):
wifi: iwlwifi: mld: Work around Clang loop unrolling bug
ubsan: integer-overflow: depend on BROKEN to keep this out of CI
overflow: Introduce __DEFINE_FLEX for having no initializer
randstruct: gcc-plugin: Fix attribute addition
lib/Kconfig.ubsan | 2 ++
scripts/gcc-plugins/gcc-common.h | 32 +++++++++++++++++++++++++++
scripts/gcc-plugins/randomize_layout_plugin.c | 22 +++++++++---------
include/linux/overflow.h | 25 ++++++++++++++++-----
drivers/net/wireless/intel/iwlwifi/mld/d3.c | 2 +-
5 files changed, 65 insertions(+), 18 deletions(-)
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-05-31 15:00 [GIT PULL] hardening fixes for v6.16-rc1 Kees Cook
@ 2025-05-31 18:20 ` Linus Torvalds
2025-05-31 19:21 ` Konstantin Ryabitsev
` (3 more replies)
0 siblings, 4 replies; 19+ messages in thread
From: Linus Torvalds @ 2025-05-31 18:20 UTC (permalink / raw)
To: Kees Cook, Konstantin Ryabitsev
Cc: linux-kernel, Eric Biggers, Ingo Saitz, kernel test robot,
Marco Elver, Nathan Chancellor, Thiago Jung Bauermann
On Sat, 31 May 2025 at 08:00, Kees Cook <kees@kernel.org> wrote:
>
> Please pull this small handful of hardening fixes for v6.16-rc1.
WTF, Kees?
You seem to have actively maliciously modified your tree completely.
There are completely crazy commits in there that are entirely fake.
You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
which *claims* to be from me, and committed by me, but is very much
not. It's some garbage you have entirely made up.
Yes, there is a real commit like that, but it's has the SHA1 ID of
9d230d500b0e.
And this isn't some kind of innocent rebasing mistake, because this
actively lies about who committed it.
This is completely unacceptable.
I will now refuse to pull *anything* from you until you explain what
the f&*^ you have been up to, because this looks like you have been
doing actively bad things.
You need to nuke that tree, and come up with a good explanation for
this kind of shit.
I'm cc'ing Konstantin, because I really think these kinds of games are
COMPLETELY UNACCEPTABLE, and this is not the kind of behavior we can
have on kernel.org accounts.
Konstantin - please disable Kees' account immediately until this is
cleared up. Because this looks *malicious*.
Linus
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-05-31 18:20 ` Linus Torvalds
@ 2025-05-31 19:21 ` Konstantin Ryabitsev
2025-05-31 19:57 ` Konstantin Ryabitsev
` (2 subsequent siblings)
3 siblings, 0 replies; 19+ messages in thread
From: Konstantin Ryabitsev @ 2025-05-31 19:21 UTC (permalink / raw)
To: Linus Torvalds
Cc: Kees Cook, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> Konstantin - please disable Kees' account immediately until this is
> cleared up. Because this looks *malicious*.
Account disabled until further notice.
-K
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-05-31 18:20 ` Linus Torvalds
2025-05-31 19:21 ` Konstantin Ryabitsev
@ 2025-05-31 19:57 ` Konstantin Ryabitsev
2025-05-31 21:36 ` Al Viro
2025-06-01 1:06 ` Kees Cook
3 siblings, 0 replies; 19+ messages in thread
From: Konstantin Ryabitsev @ 2025-05-31 19:57 UTC (permalink / raw)
To: Linus Torvalds
Cc: Kees Cook, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
> git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
For the record, this object came in through this push:
https://git.kernel.org/pub/scm/infra/transparency-logs/gitolite/git/1.git/plain/m?id=7df025cb5c2a034128abf8b6d064c4c17cddff65
There is a push signature on it, which does verify:
gpg: Signature made Sat 31 May 2025 11:04:02 AM EDT
gpg: using EDDSA key 523E475E4448ED8757479D21362B0BDE39E424BB
gpg: Good signature from "Kees Cook <kees@outflux.net>"
-K
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-05-31 18:20 ` Linus Torvalds
2025-05-31 19:21 ` Konstantin Ryabitsev
2025-05-31 19:57 ` Konstantin Ryabitsev
@ 2025-05-31 21:36 ` Al Viro
2025-06-01 1:06 ` Kees Cook
3 siblings, 0 replies; 19+ messages in thread
From: Al Viro @ 2025-05-31 21:36 UTC (permalink / raw)
To: Linus Torvalds
Cc: Kees Cook, Konstantin Ryabitsev, linux-kernel, Eric Biggers,
Ingo Saitz, kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> On Sat, 31 May 2025 at 08:00, Kees Cook <kees@kernel.org> wrote:
> >
> > Please pull this small handful of hardening fixes for v6.16-rc1.
>
> WTF, Kees?
>
> You seem to have actively maliciously modified your tree completely.
>
> There are completely crazy commits in there that are entirely fake.
>
> You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
> git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
>
> which *claims* to be from me, and committed by me, but is very much
> not. It's some garbage you have entirely made up.
>
> Yes, there is a real commit like that, but it's has the SHA1 ID of
> 9d230d500b0e.
Interesting - looks like a large part of commit graph had been mirrored
with mergetag parts filed off; actual tree objects appear to match...
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-05-31 18:20 ` Linus Torvalds
` (2 preceding siblings ...)
2025-05-31 21:36 ` Al Viro
@ 2025-06-01 1:06 ` Kees Cook
2025-06-01 2:22 ` Stephen Rothwell
2025-06-01 2:35 ` Linus Torvalds
3 siblings, 2 replies; 19+ messages in thread
From: Kees Cook @ 2025-06-01 1:06 UTC (permalink / raw)
To: Linus Torvalds, Konstantin Ryabitsev
Cc: linux-kernel, Eric Biggers, Ingo Saitz, kernel test robot,
Marco Elver, Nathan Chancellor, Thiago Jung Bauermann
On May 31, 2025 11:20:20 AM PDT, Linus Torvalds <torvalds@linux-foundation.org> wrote:
>On Sat, 31 May 2025 at 08:00, Kees Cook <kees@kernel.org> wrote:
>>
>> Please pull this small handful of hardening fixes for v6.16-rc1.
>
>WTF, Kees?
>
>You seem to have actively maliciously modified your tree completely.
>
>There are completely crazy commits in there that are entirely fake.
>
>You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
>git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
>
>which *claims* to be from me, and committed by me, but is very much
>not. It's some garbage you have entirely made up.
>
>Yes, there is a real commit like that, but it's has the SHA1 ID of
>9d230d500b0e.
>
>And this isn't some kind of innocent rebasing mistake, because this
>actively lies about who committed it.
>
>This is completely unacceptable.
>
>I will now refuse to pull *anything* from you until you explain what
>the f&*^ you have been up to, because this looks like you have been
>doing actively bad things.
I have no idea. I had noticed a bunch of my trees were refusing to have sane merges. I kept trying to rebase them to sort it out, but it seems it has not worked. This is all on top of an SSD that was getting mad at me and I had to replace it, but it threw errors during the copy. I thought everything got recovered in my various worktrees, but clearly something is still wrong.
>You need to nuke that tree, and come up with a good explanation for
>this kind of shit.
I'll throw it all out and rebuild from patches.
>I'm cc'ing Konstantin, because I really think these kinds of games are
>COMPLETELY UNACCEPTABLE, and this is not the kind of behavior we can
>have on kernel.org accounts.
>
>Konstantin - please disable Kees' account immediately until this is
>cleared up. Because this looks *malicious*.
Sorry! AFAICT it's all just from broken trees I tried to reconstruct (badly it seems).
Since I can't push to kernel.org, what shall I do for resending this PR after I've re-re-constructed everything?
-Kees
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 1:06 ` Kees Cook
@ 2025-06-01 2:22 ` Stephen Rothwell
2025-06-01 2:35 ` Linus Torvalds
1 sibling, 0 replies; 19+ messages in thread
From: Stephen Rothwell @ 2025-06-01 2:22 UTC (permalink / raw)
To: Kees Cook
Cc: Linus Torvalds, Konstantin Ryabitsev, linux-kernel, Eric Biggers,
Ingo Saitz, kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
[-- Attachment #1: Type: text/plain, Size: 460 bytes --]
Hi Kees,
On Sat, 31 May 2025 18:06:00 -0700 Kees Cook <kees@kernel.org> wrote:
>
> I'll throw it all out and rebuild from patches.
If you want to start from what you had in linux-next on Friday, you could fetch commit
eef1355c269b ("ubsan: integer-overflow: depend on BROKEN to keep this out of CI")
(that was your for-next/kspp branch) from
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
--
Cheers,
Stephen Rothwell
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 1:06 ` Kees Cook
2025-06-01 2:22 ` Stephen Rothwell
@ 2025-06-01 2:35 ` Linus Torvalds
2025-06-01 5:42 ` Kees Cook
2025-06-01 7:42 ` Kees Cook
1 sibling, 2 replies; 19+ messages in thread
From: Linus Torvalds @ 2025-06-01 2:35 UTC (permalink / raw)
To: Kees Cook
Cc: Konstantin Ryabitsev, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, 31 May 2025 at 18:06, Kees Cook <kees@kernel.org> wrote:
>
> I have no idea. I had noticed a bunch of my trees were refusing to have sane merges.
The rebased history would explain that, but the reason I'm upset about
it is that I don't even see how that rebasing could possibly happen
"by mistake".
Any normal git merge rebasing should re-write the committer. So to get
the kinds of rewritten history that I saw, it almost has to be
intentional. I don't see how that has happened by mistake.
At a minimum there is some truly effed up scripting going on.
Because it wasn't just one or two commits, it was a whole slew of
them. I mentioned one, but there were *thousands* of rewritten
commits.
IThat bad branch of yours had 330 (!) merge commits that were
attributed to me (both authorship and commit information) and weren't
actually from my tree.
And those are just *my* commits. Never mind the 6000+ other commits
that didn't purport to be from me.
This is not some "disk corruption" issue.
There was real *work* involved in re-creating 330 copies of my merges
and 6000 copies of other peoples commits. I only looked at one, but it
appears identical except for the lack of source tag signature
information (and then all the subsequent ones that depend on it will
obviously then have different parent SHA1s etc).
Linus
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 2:35 ` Linus Torvalds
@ 2025-06-01 5:42 ` Kees Cook
2025-06-01 7:42 ` Kees Cook
1 sibling, 0 replies; 19+ messages in thread
From: Kees Cook @ 2025-06-01 5:42 UTC (permalink / raw)
To: Linus Torvalds
Cc: Konstantin Ryabitsev, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, May 31, 2025 at 07:35:45PM -0700, Linus Torvalds wrote:
> On Sat, 31 May 2025 at 18:06, Kees Cook <kees@kernel.org> wrote:
> >
> > I have no idea. I had noticed a bunch of my trees were refusing to have sane merges.
>
> The rebased history would explain that, but the reason I'm upset about
> it is that I don't even see how that rebasing could possibly happen
> "by mistake".
>
> Any normal git merge rebasing should re-write the committer. So to get
> the kinds of rewritten history that I saw, it almost has to be
> intentional. I don't see how that has happened by mistake.
>
> At a minimum there is some truly effed up scripting going on.
Well, I didn't do it on purpose. I think I have an established track
record of asking you first before I intentionally do stupid things with
git (like the recent prefix collision PoC[1] that I privately emailed
you about).
I'm trying to figure it out now. I must have shot myself in the foot
somewhere, since I had a number of "by hand" things going on this week.
My current guess (while AFK) was that something went sideways while
trying to rebase my for-next/hardening vs my for-linus/hardening trees,
since I had, at one point, based my for-next on
9d7a0577c9db35c4cc52db90bc415ea248446472 (1 commit past v6.15-rc3) since
I was still working on -Wunterminated-string-initialization patches.
(Normally I exclusively base on -rc2.) Then I had my SSD failure, but
things seemed okay after that, but then when I built the
for-linus/hardening tree I rebased patches that were on top of for-next
over on to latest "master" because basing it on 1 past rc3 seemed weird.
It was around here that I started having problems.
But like I said, I'll see if I can reproduce it. I have a lot of
scripting to sanity check my pushes, and I (stupidly) overrode them
because normally they get angry when I'm not basing on rc2, etc. But
I've never had anything like this happen.
-Kees
[1] https://people.kernel.org/kees/colliding-with-the-sha-prefix-of-linuxs-initial-git-commit
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 2:35 ` Linus Torvalds
2025-06-01 5:42 ` Kees Cook
@ 2025-06-01 7:42 ` Kees Cook
2025-06-01 14:40 ` Konstantin Ryabitsev
1 sibling, 1 reply; 19+ messages in thread
From: Kees Cook @ 2025-06-01 7:42 UTC (permalink / raw)
To: Linus Torvalds
Cc: Konstantin Ryabitsev, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sat, May 31, 2025 at 07:35:45PM -0700, Linus Torvalds wrote:
> The rebased history would explain that, but the reason I'm upset about
> it is that I don't even see how that rebasing could possibly happen
> "by mistake".
Here's my reflog, but tl;dr it looks like "b4 trailers" did it. If you
want to skip to that, search for "fast-import" below...
eef1355c269b (HEAD -> for-next/hardening, origin/for-next/hardening, for-next/kspp) HEAD@{0}: checkout: moving from broken/for-next/hardening to for-next/hardening
Getting back to sfr's recommended "known good state".
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{1}: Branch: renamed refs/heads/for-next/hardening to refs/heads/broken/for-next/hardening
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{3}: checkout: moving from broken/for-linus/hardening to for-next/hardening
7ea1ca94c127 (tag: hardening-v6.16-rc1-fix1, origin/for-next/kspp, origin/for-linus/hardening, kees/for-linus/hardening, broken/for-next/kspp, broken/for-linus/hardening) HEAD@{4}: Branch: renamed refs/heads/for-linus/hardening to refs/heads/broken/for-linus/hardening
This is renaming both my for-next and for-linus to "broken/..."
7ea1ca94c127 (tag: hardening-v6.16-rc1-fix1, origin/for-next/kspp, origin/for-linus/hardening, kees/for-linus/hardening, broken/for-next/kspp, broken/for-linus/hardening) HEAD@{6}: am: randstruct: gcc-plugin: Fix attribute addition
2050f9ffa893 HEAD@{7}: commit (amend): overflow: Introduce __DEFINE_FLEX for having no initializer
d316fb5f88c9 HEAD@{8}: checkout: moving from for-next/hardening to for-linus/hardening
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{9}: checkout: moving from fix-rand2 to for-next/hardening
This is amending "overflow: Introduce __DEFINE_FLEX for having no
initializer" and pulling down "randstruct: gcc-plugin: Fix attribute
addition" from lore to get the Tested-by tag -- but it's all going on
top of the broken for-linus/hardening, not having realized it was broken.
32838c389761 (fix-rand2) HEAD@{10}: commit (amend): randstruct: gcc-plugin: Fix attribute addition
e4750e3b77b6 HEAD@{11}: commit (amend): randstruct: gcc-plugin: Fix attribute addition
3e77d5ec7b16 HEAD@{12}: commit (amend): randstruct: gcc-plugin: Fix attribute addition
d8b0249fc36e HEAD@{13}: commit: gcc-plugins: randstruct: Fix attribute creation
8dcf80e5097b HEAD@{14}: rebase (finish): returning to refs/heads/fix-rand2
8dcf80e5097b HEAD@{15}: rebase (pick): overflow: Introduce __DEFINE_FLEX for having no initializer
66989cf66d91 HEAD@{16}: rebase (pick): ubsan: integer-overflow: depend on BROKEN to keep this out of CI
8bfebe2e9cc5 HEAD@{17}: rebase (pick): wifi: iwlwifi: mld: Work around Clang loop unrolling bug
e0797d3b91de (linux-next/stable, master) HEAD@{18}: rebase (start): checkout master
d316fb5f88c9 HEAD@{19}: checkout: moving from for-linus/hardening to fix-rand2
This is trying to figure out why merging didn't work, so I restarted on
master and cherry-picked the patches to a separate tree ("fix-rand2")
for testing.
d316fb5f88c9 HEAD@{20}: commit (amend): overflow: Introduce __DEFINE_FLEX for having no initializer
8c2917224046 HEAD@{21}: commit: overflow: Introduce __DEFINE_FLEX for having no initializer
2e058d249588 HEAD@{22}: checkout: moving from for-next/hardening to for-linus/hardening
This is working on and testing "overflow: Introduce __DEFINE_FLEX for having no
initializer".
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{23}: reset: moving to f8b59a0f90a2
96e5b773dff6 HEAD@{24}: commit: platform/x86: thinkpad_acpi: Handle KCOV __init vs inline mismatches
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{25}: am --abort
f8b59a0f90a2 (broken/for-next/hardening) HEAD@{26}: reset: moving to f8b59a0f90a2
2e058d249588 HEAD@{27}: checkout: moving from for-linus/hardening to for-next/hardening
This is splitting out "platform/x86: thinkpad_acpi: Handle KCOV __init
vs inline mismatches" so I could send it out, and then throwing away the
patch since its going via a separate tree and I need to review that whole
tree separately anyway. (This tree is still the _broken_ for-next tree...)
2e058d249588 HEAD@{28}: checkout: moving from for-next/hardening to for-linus/hardening
2e058d249588 HEAD@{29}: checkout: moving from test/1 to for-next/hardening
9d230d500b0e HEAD@{30}: rebase (skip) (finish): returning to refs/heads/test/1
9d230d500b0e HEAD@{31}: rebase (start): checkout master
939b93ecd094 HEAD@{32}: checkout: moving from landing/v6.16-rc1-pre/hardening to test/1
I was cleaning up old trees, and went back to look at old commits
(9d230d500b0e) but couldn't figure out why I was having trouble with
merge bases, and tried a rebase but it exploded. I return to the
(broken) for-next.
dbfe626a6fbf (landing/v6.16-rc1-pre/hardening) HEAD@{33}: reset: moving to HEAD
dbfe626a6fbf (landing/v6.16-rc1-pre/hardening) HEAD@{34}: Branch: renamed refs/heads/dev/hardening to refs/heads/landing/v6.16-rc1-pre/hardening
dbfe626a6fbf (landing/v6.16-rc1-pre/hardening) HEAD@{36}: rebase (finish): returning to refs/heads/dev/hardening
dbfe626a6fbf (landing/v6.16-rc1-pre/hardening) HEAD@{37}: rebase (pick): ovl: Check for NULL d_inode() in ovl_dentry_upper()
a3ca08cb5fb3 HEAD@{38}: rebase (pick): slab: Decouple slab_debug and no_hash_pointers
9d230d500b0e HEAD@{39}: rebase (start): checkout master
345b264de969 HEAD@{40}: rebase (finish): returning to refs/heads/dev/hardening
345b264de969 HEAD@{41}: rebase (pick): ovl: Check for NULL d_inode() in ovl_dentry_upper()
31f107a183e6 HEAD@{42}: rebase (pick): drm/amdgpu/atom: Work around vbios NULL offset false positive
3523b5868c43 HEAD@{43}: rebase (pick): slab: Decouple slab_debug and no_hash_pointers
8ffd015db85f (tag: v6.15-rc2) HEAD@{44}: rebase (start): checkout 8ffd015db85f
541157c72800 HEAD@{45}: checkout: moving from for-next/hardening to dev/hardening
Checking if some expected patches have already landed in master while
cleaning up older dev trees and rebasing them forward for potential
revisions during the coming dev cycle. This appears to be sanely based
on master, not a broken tree.
2e058d249588 HEAD@{46}: checkout: moving from dev/v6.15-rc4/hardening to for-next/hardening
9d230d500b0e HEAD@{47}: rebase (skip) (finish): returning to refs/heads/dev/v6.15-rc4/hardening
9d230d500b0e HEAD@{48}: rebase (start): checkout master
b7286d1e8cad HEAD@{49}: checkout: moving from dev/v6.16-rc1-pre/-Wunterminated-string-initialization to dev/v6.15-rc4/hardening
62329e859b25 (dev/v6.16-rc1-pre/-Wunterminated-string-initialization) HEAD@{50}: checkout: moving from for-next/hardening to dev/v6.16-rc1-pre/-Wunterminated-string-initialization
Trying to figure out why I can't sanely rebase. (Note that 2e058d249588 is on a
broken base tree, repeated above. Below, c102753312e8 is on a sane tree.)
2e058d249588 HEAD@{51}: reset: moving to 2e058d249588
bd31653e0d81 HEAD@{52}: reset: moving to HEAD
bd31653e0d81 HEAD@{53}: fast-import
62329e859b25 (dev/v6.16-rc1-pre/-Wunterminated-string-initialization) HEAD@{54}: checkout: moving from test/kern-splat to for-next/hardening
9a7d4e791037 HEAD@{55}: reset: moving to 9a7d4e791037
62329e859b25 (dev/v6.16-rc1-pre/-Wunterminated-string-initialization) HEAD@{56}: checkout: moving from for-next/hardening to test/kern-splat
This is where 2e058d249588 first appears, and before it is the branch
juggling of one of my scripts to send a single patch out of the middle of
a tree ("kern-splat" was a script to email the top patch, "kern-splat-one"
sends a specific sha from the tree by temporarily making a new branch,
"test/kern-splat", with that sha at the top, using "kern-splat", and
then restoring the tree to the prior state.)
But the "fast-import" is NOT part of that, but rather from "b4
trailers". I checked my reflog against my bash history...
"l" is "git log -1"
"s" is "git show"
"d" is "git diff"
"latr" is "git branch --sort=committerdate"
14029 git commit --amend
14030 s
14031 d
14032 git commit -asm '[DUP]'
14033 l
14034 kern-splat-one 9a7d4e791037
14035 l
14036 b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
14037 l
14038 git reset --hard 2e058d249588
14039 l
14040 latr
14041 l dev/v6.16-rc1-pre/-Wunterminated-string-initialization
14042 git reflog
14043 l 62329e859b25
14044 latr
14045 #git checkout 62329e859b25
14046 git branch -D dev/v6.16-rc1-pre/-Wunterminated-string-initialization
14047 git checkout 62329e859b25 -b dev/v6.16-rc1-pre/-Wunterminated-string-initialization
14048 l
14049 latr
14050 git branch -D dev/next-20250516/Wunterminated-string-initialization
14051 git branch -D dev/mld
HEAD@{57} below is 14029 above.
HEAD@{58} below is 14032 above.
HEAD@{54} through HEAD@{56} above is 14034 above.
HEAD@{53} and HEAD@{52} above is 14036 above.
Then I try to throw away (with 14038):
62329e859b25 (dev/v6.16-rc1-pre/-Wunterminated-string-initialization) [DUP]
9a7d4e791037 crypto: Annotate crypto strings with nonstring
b080c44c4d69 kbuild: Re-enable -Wunterminated-string-initialization
and just have "ubsan: integer-overflow: depend on BROKEN to keep this
out of CI" on top, but for some reason it shows in "git log -1" as
2e058d249588 not 8c2bb7d12601.
Now, looking at the tree for 8c2bb7d12601, I see I'm on sane "master"
base. I'll bet "b4 trailers" did something Exciting when rewriting stuff.
More below...
62329e859b25 (dev/v6.16-rc1-pre/-Wunterminated-string-initialization) HEAD@{57}: commit: [DUP]
9a7d4e791037 HEAD@{58}: commit (amend): crypto: Annotate crypto strings with nonstring
08652ab8b218 HEAD@{59}: commit (amend): crypto: Annotate crypto strings with nonstring
7bf10004aed0 HEAD@{60}: commit: crypto: Annotate crypto strings with nonstring
b080c44c4d69 HEAD@{61}: commit (cherry-pick): kbuild: Re-enable -Wunterminated-string-initialization
8c2bb7d12601 HEAD@{62}: rebase (finish): returning to refs/heads/for-next/hardening
8c2bb7d12601 HEAD@{63}: rebase (pick): ubsan: integer-overflow: depend on BROKEN to keep this out of CI
b9dbd69a32e3 HEAD@{64}: rebase (pick): wifi: iwlwifi: mld: Work around Clang loop unrolling bug
9d230d500b0e HEAD@{65}: rebase (start): checkout master
9d230d500b0e and 8c2bb7d12601 are sane trees. I'm pulling forward my
patches to enable -Wunterminated-string-initialization for testing, and
I find a new warning (in crypto) which I make, as well as another that
I'd already fixed before, that I split and leave as "[DUP]", then run
"kern-splat-one" on the crypto patch to get it sent[1].
c102753312e8 HEAD@{66}: checkout: moving from dev/v6.16-rc1-pre/-Wunterminated-string-initialization to for-next/hardening
9d230d500b0e HEAD@{67}: checkout: moving from for-next/hardening to dev/v6.16-rc1-pre/-Wunterminated-string-initialization
c102753312e8 HEAD@{68}: rebase (finish): returning to refs/heads/for-next/hardening
c102753312e8 HEAD@{69}: rebase (pick): ubsan: integer-overflow: depend on BROKEN to keep this out of CI
fec8dc564c2f HEAD@{70}: rebase (reword): wifi: iwlwifi: mld: Work around Clang loop unrolling bug
368556dd234d HEAD@{71}: rebase: fast-forward
f0cd6012c40d (tag: hardening-v6.16-rc1, kees/for-next/kspp, kees/for-next/hardening) HEAD@{72}: rebase (start): checkout f0cd6012c40d
70f74ef707fc HEAD@{73}: commit (amend): ubsan: integer-overflow: depend on BROKEN to keep this out of CI
eef1355c269b (HEAD -> for-next/hardening, origin/for-next/hardening, for-next/kspp) HEAD@{74}: commit (amend): ubsan: integer-overflow: depend on BROKEN to keep this out of CI
c102753312e8 is based on a sane tree, I'm starting to build patches that
I'd like to land in -rc1, based on my existing for-next tree. Which gets
us back to the "known good state", per sfr.
Okay, reproducing the "b4 trailers" steps:
#### start from known good tree
$ git checkout 62329e859b25 -b test/wreckage/before
$ l
62329e859b25 (HEAD -> test/wreckage/before, dev/v6.16-rc1-pre/-Wunterminated-string-initialization) [DUP]
9a7d4e791037 crypto: Annotate crypto strings with nonstring
b080c44c4d69 kbuild: Re-enable -Wunterminated-string-initialization
8c2bb7d12601 ubsan: integer-overflow: depend on BROKEN to keep this out of CI
b9dbd69a32e3 wifi: iwlwifi: mld: Work around Clang loop unrolling bug
9d230d500b0e Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
bf373e4c786b Merge tag 'devicetree-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
8ca154e4910e Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
43db11110730 Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
12e9b9e5223b Merge tag 'ipe-pr-20250527' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe
90b83efa6701 (stable/master) Merge tag 'bpf-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
1b98f357dadd Merge tag 'net-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
...
### Try to update 8c2bb7d12601 with the Acked-by from the list...
$ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
Finding code-review trailers for 39 commits...
Grabbing thread from lore.kernel.org/all/CANpmjNPpyJn%2B%2BDVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F%2B_8Xg@mail.gmail.com/t.mbox.gz
---
+ Acked-by: Marco Elver <elver@google.com>
https://lore.kernel.org/all/CANpmjNPpyJn%2B%2BDVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F%2B_8Xg@mail.gmail.com
---
Press Enter to apply these trailers or Ctrl-C to abort
ubsan: integer-overflow: depend on BROKEN to keep this out of CI
+ Acked-by: Marco Elver <elver@google.com> (✓ DKIM/google.com)
---
Invoking git-filter-repo to update trailers.
New history written in 3.28 seconds...
Completely finished after 3.76 seconds.
Trailers updated.
$ l
bd31653e0d81 (HEAD -> test/wreckage/before) [DUP]
b68e360e9673 crypto: Annotate crypto strings with nonstring
650370e9729c kbuild: Re-enable -Wunterminated-string-initialization
2e058d249588 ubsan: integer-overflow: depend on BROKEN to keep this out of CI
50d526235542 wifi: iwlwifi: mld: Work around Clang loop unrolling bug
f8b59a0f90a2 (broken/for-next/hardening) Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
301559ea27b1 Merge tag 'devicetree-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
ca1f463363e2 Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
...
Welp, that precisely recreated it -- even identical shas! Looking at
the b4 output, I do see a suspicious "39 commits" listed for some reason.
So, I assume the "git-filter-repo" invocation is what mangled it. I will
try to dig into what b4 actually asked it to do in the morning...
-Kees
[1] https://lore.kernel.org/lkml/20250529173113.work.760-kees@kernel.org/
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 7:42 ` Kees Cook
@ 2025-06-01 14:40 ` Konstantin Ryabitsev
2025-06-01 15:38 ` Kees Cook
2025-06-01 17:12 ` Linus Torvalds
0 siblings, 2 replies; 19+ messages in thread
From: Konstantin Ryabitsev @ 2025-06-01 14:40 UTC (permalink / raw)
To: Kees Cook
Cc: Linus Torvalds, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 12:42:14AM -0700, Kees Cook wrote:
> Okay, reproducing the "b4 trailers" steps:
>
> #### start from known good tree
> $ git checkout 62329e859b25 -b test/wreckage/before
> $ l
> 62329e859b25 (HEAD -> test/wreckage/before, dev/v6.16-rc1-pre/-Wunterminated-string-initialization) [DUP]
> 9a7d4e791037 crypto: Annotate crypto strings with nonstring
> b080c44c4d69 kbuild: Re-enable -Wunterminated-string-initialization
> 8c2bb7d12601 ubsan: integer-overflow: depend on BROKEN to keep this out of CI
> b9dbd69a32e3 wifi: iwlwifi: mld: Work around Clang loop unrolling bug
> 9d230d500b0e Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
> bf373e4c786b Merge tag 'devicetree-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
> 8ca154e4910e Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
> 43db11110730 Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
> 12e9b9e5223b Merge tag 'ipe-pr-20250527' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe
> 90b83efa6701 (stable/master) Merge tag 'bpf-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
> 1b98f357dadd Merge tag 'net-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
> ...
> ### Try to update 8c2bb7d12601 with the Acked-by from the list...
> $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
> Finding code-review trailers for 39 commits...
Yeah, this is danger territory, because you're asking to update a random
commit in the tree history. Without passing --since, we're looking at raw git
history in the current branch as far as 1 month back to try to figure out the
range of commits that we should work with:
https://git.kernel.org/pub/scm/utils/b4/b4.git/tree/src/b4/ez.py#n1048
I don't yet know why it wants to rewrite 39 commits when we're updating a
commit that's only 3 away from the tip. If you manage to rerun this with b4 -d
and send me the output, I will be glad to look at it. Alternatively, if you
can let me know the steps to get my tree in the same state as yours, I can run
it locally.
> Welp, that precisely recreated it -- even identical shas! Looking at
> the b4 output, I do see a suspicious "39 commits" listed for some reason.
Well, that's the point where the user, in theory, goes "this is weird, why is
it 39 commits," and does Ctrl-C, but I'm happy to accept blame here -- we
should be more careful with this operation and bail out whenever we recognize
that something has gone wrong. To begin with, we'll output a listing of all
the commits that will be rewritten, just to make it more obvious when things
are about to go wrong.
> So, I assume the "git-filter-repo" invocation is what mangled it. I will
> try to dig into what b4 actually asked it to do in the morning...
Thanks for looking into this. Linus, this is accurate and I am 100% convinced
that there was no malicious intent. My apologies for being part of the mess
through the tooling.
I will reinstate Kees's account so he can resume his work.
-K
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 14:40 ` Konstantin Ryabitsev
@ 2025-06-01 15:38 ` Kees Cook
2025-06-01 17:58 ` Konstantin Ryabitsev
2025-06-01 17:12 ` Linus Torvalds
1 sibling, 1 reply; 19+ messages in thread
From: Kees Cook @ 2025-06-01 15:38 UTC (permalink / raw)
To: Konstantin Ryabitsev
Cc: Linus Torvalds, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 10:40:18AM -0400, Konstantin Ryabitsev wrote:
> On Sun, Jun 01, 2025 at 12:42:14AM -0700, Kees Cook wrote:
> > Okay, reproducing the "b4 trailers" steps:
> >
> > #### start from known good tree
> > $ git checkout 62329e859b25 -b test/wreckage/before
> > $ l
> > 62329e859b25 (HEAD -> test/wreckage/before, dev/v6.16-rc1-pre/-Wunterminated-string-initialization) [DUP]
> > 9a7d4e791037 crypto: Annotate crypto strings with nonstring
> > b080c44c4d69 kbuild: Re-enable -Wunterminated-string-initialization
> > 8c2bb7d12601 ubsan: integer-overflow: depend on BROKEN to keep this out of CI
> > b9dbd69a32e3 wifi: iwlwifi: mld: Work around Clang loop unrolling bug
> > 9d230d500b0e Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
> > bf373e4c786b Merge tag 'devicetree-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
> > 8ca154e4910e Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
> > 43db11110730 Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
> > 12e9b9e5223b Merge tag 'ipe-pr-20250527' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe
> > 90b83efa6701 (stable/master) Merge tag 'bpf-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
> > 1b98f357dadd Merge tag 'net-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
> > ...
> > ### Try to update 8c2bb7d12601 with the Acked-by from the list...
> > $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
> > Finding code-review trailers for 39 commits...
>
> Yeah, this is danger territory, because you're asking to update a random
> commit in the tree history. Without passing --since, we're looking at raw git
> history in the current branch as far as 1 month back to try to figure out the
> range of commits that we should work with:
Yeah, my SSD glitches were a red-herring -- they happened before the
"known good state" sfr pointed out (so, yay, I did fix my trees from
that).
My mistakes were:
- not noticing the "39 commits" warning
- overriding my push sanity checks
Sorry about all the noise and confusion!
> https://git.kernel.org/pub/scm/utils/b4/b4.git/tree/src/b4/ez.py#n1048
>
> I don't yet know why it wants to rewrite 39 commits when we're updating a
> commit that's only 3 away from the tip. If you manage to rerun this with b4 -d
> and send me the output, I will be glad to look at it. Alternatively, if you
> can let me know the steps to get my tree in the same state as yours, I can run
> it locally.
This shows the same problem (using Linus's tree and linux-next):
$ git checkout 9d230d500b0e -b test/repro/before
$ git cherry-pick 368556dd234d
$ git cherry-pick eef1355c269b
$ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
> Thanks for looking into this. Linus, this is accurate and I am 100% convinced
> that there was no malicious intent. My apologies for being part of the mess
> through the tooling.
>
> I will reinstate Kees's account so he can resume his work.
Thank you! I will now *very carefully* construct a v2 PR...
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 14:40 ` Konstantin Ryabitsev
2025-06-01 15:38 ` Kees Cook
@ 2025-06-01 17:12 ` Linus Torvalds
2025-06-01 17:49 ` Konstantin Ryabitsev
2025-06-03 12:42 ` Christian Brauner
1 sibling, 2 replies; 19+ messages in thread
From: Linus Torvalds @ 2025-06-01 17:12 UTC (permalink / raw)
To: Konstantin Ryabitsev
Cc: Kees Cook, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, 1 Jun 2025 at 07:40, Konstantin Ryabitsev
<konstantin@linuxfoundation.org> wrote:
>
> On Sun, Jun 01, 2025 at 12:42:14AM -0700, Kees Cook wrote:
> > Okay, reproducing the "b4 trailers" steps:
> > ...
> > ### Try to update 8c2bb7d12601 with the Acked-by from the list...
> > $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
> > Finding code-review trailers for 39 commits...
>
> Yeah, this is danger territory, because you're asking to update a random
> commit in the tree history.
So the *real* danger territory is lying about committer information.
That's the thing that *no* standard too should ever do, and what made
me so upset.
Konstantin, can you please fix b4 to never *ever* rewrite a commit
that has different committer information than the current user?
I don't think this is about "39 commits down". This is apparently b4
just doing plain bad things, adn it would be bad even if it was only
rewriting the top-most commit.
Setting authorship to somebody else is normal and expected: "author"
is about giving credit.
But setting *committer* information to somebody else is not about
giving credit, it's about lying. Tools that do that are broken tools.
I'm also not clear on why apparently the script tries to retain
committer dates. That's also just plain lying.
> I will reinstate Kees's account so he can resume his work.
Yeah, I see the updated pull request,
Linus
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 17:12 ` Linus Torvalds
@ 2025-06-01 17:49 ` Konstantin Ryabitsev
2025-06-01 18:24 ` Linus Torvalds
2025-06-03 12:42 ` Christian Brauner
1 sibling, 1 reply; 19+ messages in thread
From: Konstantin Ryabitsev @ 2025-06-01 17:49 UTC (permalink / raw)
To: Linus Torvalds
Cc: Kees Cook, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 10:12:02AM -0700, Linus Torvalds wrote:
> > Yeah, this is danger territory, because you're asking to update a random
> > commit in the tree history.
>
> So the *real* danger territory is lying about committer information.
> That's the thing that *no* standard too should ever do, and what made
> me so upset.
>
> Konstantin, can you please fix b4 to never *ever* rewrite a commit
> that has different committer information than the current user?
Yes, I will add that safety check in for sure. This is one of those scope
creep situations -- the trailers command started out as a way to apply
trailers only to your own curated series, e.g. before submitting a vN+1, but
it was then hacked to also work on arbitrary trees, without properly
considering all possible implications.
> I don't think this is about "39 commits down". This is apparently b4
> just doing plain bad things, adn it would be bad even if it was only
> rewriting the top-most commit.
>
> Setting authorship to somebody else is normal and expected: "author"
> is about giving credit.
>
> But setting *committer* information to somebody else is not about
> giving credit, it's about lying. Tools that do that are broken tools.
>
> I'm also not clear on why apparently the script tries to retain
> committer dates. That's also just plain lying.
It's working as designed, I'm afraid -- git-filter-repo is a powerful tool
for rewriting git history and will happily fire off even when you are pointing
it at your own two feet.
-K
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 15:38 ` Kees Cook
@ 2025-06-01 17:58 ` Konstantin Ryabitsev
2025-06-01 18:56 ` Kees Cook
2025-06-03 12:55 ` Vlastimil Babka
0 siblings, 2 replies; 19+ messages in thread
From: Konstantin Ryabitsev @ 2025-06-01 17:58 UTC (permalink / raw)
To: Kees Cook
Cc: Linus Torvalds, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 08:38:10AM -0700, Kees Cook wrote:
> > I don't yet know why it wants to rewrite 39 commits when we're updating a
> > commit that's only 3 away from the tip. If you manage to rerun this with b4 -d
> > and send me the output, I will be glad to look at it. Alternatively, if you
> > can let me know the steps to get my tree in the same state as yours, I can run
> > it locally.
>
> This shows the same problem (using Linus's tree and linux-next):
>
> $ git checkout 9d230d500b0e -b test/repro/before
> $ git cherry-pick 368556dd234d
> $ git cherry-pick eef1355c269b
> $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
Thanks, I was able to recreate it and will use it as my test case. I suggest
that until I have a fix in place, that you always use `br trailers -u` with a
`--since-commit` flag, to restrict the range we're looking at. The solution
I'll work on is to iterate the range of commits we get back and further
restrict it to just the contiguous range matching the current committer, going
backwards from the HEAD. This would have avoided the problem by restricting
the commits being considered to just the handful that were cherry-picked on
top of the latest merges from Linus.
-K
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 17:49 ` Konstantin Ryabitsev
@ 2025-06-01 18:24 ` Linus Torvalds
0 siblings, 0 replies; 19+ messages in thread
From: Linus Torvalds @ 2025-06-01 18:24 UTC (permalink / raw)
To: Konstantin Ryabitsev
Cc: Kees Cook, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, 1 Jun 2025 at 10:49, Konstantin Ryabitsev
<konstantin@linuxfoundation.org> wrote:
>
> It's working as designed, I'm afraid -- git-filter-repo is a powerful tool
> for rewriting git history and will happily fire off even when you are pointing
> it at your own two feet.
Yeah, well, it's designed for rewriting the repo.
But it most certainly can also rewrite the committer name, email and date.
And I do think that even if you check that the committer doesn't
change, you *should* make it rewrite the commit date, so that people
see when the thing was used to rebase commits.
Afaik, that's as easy as just setting the 'committer_date' member in
the commit callback. No?
Linus
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 17:58 ` Konstantin Ryabitsev
@ 2025-06-01 18:56 ` Kees Cook
2025-06-03 12:55 ` Vlastimil Babka
1 sibling, 0 replies; 19+ messages in thread
From: Kees Cook @ 2025-06-01 18:56 UTC (permalink / raw)
To: Konstantin Ryabitsev
Cc: Linus Torvalds, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 01:58:27PM -0400, Konstantin Ryabitsev wrote:
> On Sun, Jun 01, 2025 at 08:38:10AM -0700, Kees Cook wrote:
> > > I don't yet know why it wants to rewrite 39 commits when we're updating a
> > > commit that's only 3 away from the tip. If you manage to rerun this with b4 -d
> > > and send me the output, I will be glad to look at it. Alternatively, if you
> > > can let me know the steps to get my tree in the same state as yours, I can run
> > > it locally.
> >
> > This shows the same problem (using Linus's tree and linux-next):
> >
> > $ git checkout 9d230d500b0e -b test/repro/before
> > $ git cherry-pick 368556dd234d
> > $ git cherry-pick eef1355c269b
> > $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
>
> Thanks, I was able to recreate it and will use it as my test case. I suggest
Okay, great.
> that until I have a fix in place, that you always use `br trailers -u` with a
> `--since-commit` flag, to restrict the range we're looking at. The solution
> I'll work on is to iterate the range of commits we get back and further
> restrict it to just the contiguous range matching the current committer, going
> backwards from the HEAD. This would have avoided the problem by restricting
> the commits being considered to just the handful that were cherry-picked on
> top of the latest merges from Linus.
Yeah, that would solve my use-case entirely. I actually thought that's
roughly how it was already working, and it has worked for me fine before
this, so I'm not sure what was different here for it.
Thank you!
-Kees
--
Kees Cook
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 17:12 ` Linus Torvalds
2025-06-01 17:49 ` Konstantin Ryabitsev
@ 2025-06-03 12:42 ` Christian Brauner
1 sibling, 0 replies; 19+ messages in thread
From: Christian Brauner @ 2025-06-03 12:42 UTC (permalink / raw)
To: Linus Torvalds
Cc: Konstantin Ryabitsev, Vlastimil Babka, Kees Cook, linux-kernel,
Eric Biggers, Ingo Saitz, kernel test robot, Marco Elver,
Nathan Chancellor, Thiago Jung Bauermann
On Sun, Jun 01, 2025 at 10:12:02AM -0700, Linus Torvalds wrote:
> On Sun, 1 Jun 2025 at 07:40, Konstantin Ryabitsev
> <konstantin@linuxfoundation.org> wrote:
> >
> > On Sun, Jun 01, 2025 at 12:42:14AM -0700, Kees Cook wrote:
> > > Okay, reproducing the "b4 trailers" steps:
> > > ...
> > > ### Try to update 8c2bb7d12601 with the Acked-by from the list...
> > > $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
> > > Finding code-review trailers for 39 commits...
> >
> > Yeah, this is danger territory, because you're asking to update a random
> > commit in the tree history.
>
> So the *real* danger territory is lying about committer information.
> That's the thing that *no* standard too should ever do, and what made
> me so upset.
>
> Konstantin, can you please fix b4 to never *ever* rewrite a commit
> that has different committer information than the current user?
>
> I don't think this is about "39 commits down". This is apparently b4
> just doing plain bad things, adn it would be bad even if it was only
> rewriting the top-most commit.
>
> Setting authorship to somebody else is normal and expected: "author"
> is about giving credit.
>
> But setting *committer* information to somebody else is not about
> giving credit, it's about lying. Tools that do that are broken tools.
>
> I'm also not clear on why apparently the script tries to retain
> committer dates. That's also just plain lying.
Fwiw, this has happened to me with b4 multiple times before so I've
stopped using b4 trailers -u. Whenever I do end up using it I look at
the base that I was using to make sure that only things got rewritten
that I expected to be rewritten (b4 is excellent though).
The last time this happened was when I did the struct kmem_cache_args
rework a few months back. Vlastimil and I ended up sharing a common base
and then he complained that something was off with our shared trees. He
later emailed me and we figured out that it was the b4 trailers thing
again iirc.
I do test-merges before I send stuff out and that's usually how I catch
stuff like that.
But for a while I was really confused how trees I had somehow ended up
being rewritten and it took a little to figure out that it was the
trailer auto updating which caused it.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [GIT PULL] hardening fixes for v6.16-rc1
2025-06-01 17:58 ` Konstantin Ryabitsev
2025-06-01 18:56 ` Kees Cook
@ 2025-06-03 12:55 ` Vlastimil Babka
1 sibling, 0 replies; 19+ messages in thread
From: Vlastimil Babka @ 2025-06-03 12:55 UTC (permalink / raw)
To: Konstantin Ryabitsev, Kees Cook
Cc: Linus Torvalds, linux-kernel, Eric Biggers, Ingo Saitz,
kernel test robot, Marco Elver, Nathan Chancellor,
Thiago Jung Bauermann, Christian Brauner
On 6/1/25 7:58 PM, Konstantin Ryabitsev wrote:
> On Sun, Jun 01, 2025 at 08:38:10AM -0700, Kees Cook wrote:
>>> I don't yet know why it wants to rewrite 39 commits when we're updating a
>>> commit that's only 3 away from the tip. If you manage to rerun this with b4 -d
>>> and send me the output, I will be glad to look at it. Alternatively, if you
>>> can let me know the steps to get my tree in the same state as yours, I can run
>>> it locally.
>>
>> This shows the same problem (using Linus's tree and linux-next):
>>
>> $ git checkout 9d230d500b0e -b test/repro/before
>> $ git cherry-pick 368556dd234d
>> $ git cherry-pick eef1355c269b
>> $ b4 trailers -u https://lore.kernel.org/all/CANpmjNPpyJn++DVZmO89ms_HkJ0OvQzkps0GjCFbWkk0F+_8Xg@mail.gmail.com
>
> Thanks, I was able to recreate it and will use it as my test case. I suggest
> that until I have a fix in place, that you always use `br trailers -u` with a
> `--since-commit` flag, to restrict the range we're looking at. The solution
I think even with --since-commit it behaves somewhat unexpectedly.
I've tried recreating an issue I had last year, that Christian just
mentioned in this thread as I was writing this up.
> git fetch git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/linux.git b4-reproducer
From git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/linux
* branch b4-reproducer -> FETCH_HEAD
> git checkout FETCH_HEAD
HEAD is now at 8a01634625a9 io_uring: port to struct kmem_cache_args
> git show HEAD~17 --show-signature --pretty=fuller
commit f65b0043b92284cf7c8e986a476a9b169a132de1
gpg: Signature made Thu 05 Sep 2024 11:31:55 AM CEST
gpg: using RSA key 7BBBC8411599234896484DF1BBE0B075D245889A
gpg: issuer "vbabka@suse.cz"
gpg: Good signature from "Vlastimil Babka <vbabka@suse.com>" [ultimate]
gpg: aka "Vlastimil Babka <vbabka@suse.cz>" [ultimate]
Merge: 5be63fc19fca 6e016babce7c
Author: Vlastimil Babka <vbabka@suse.cz>
AuthorDate: Thu Sep 5 11:31:32 2024 +0200
Commit: Vlastimil Babka <vbabka@suse.cz>
CommitDate: Thu Sep 5 11:31:32 2024 +0200
...
> b4 trailers -u --since-commit HEAD~17
Finding code-review trailers for 17 commits...
Analyzing 124 code-review messages
---
+ Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev>
https://lore.kernel.org/all/ZtpI27swD1GIC0YR@google.com
---
Press Enter to apply these trailers or Ctrl-C to abort
...
---
Invoking git-filter-repo to update trailers.
New history written in 0.17 seconds...
> git show HEAD~17 --show-signature --pretty=fuller
commit 01cc2238ba4ad3c940db76f134f56b2e0f082243
Merge: 5be63fc19fca 0f389adb4b80
Author: Vlastimil Babka <vbabka@suse.cz>
AuthorDate: Thu Sep 5 11:31:32 2024 +0200
Commit: Vlastimil Babka <vbabka@suse.cz>
CommitDate: Thu Sep 5 11:31:32 2024 +0200
See how it changed not only the merge commit itself but the right
side of the merge, which was at the time from the vfs tree.
Passing --since-commit HEAD~16 doesn't have this result, so perhaps
is it intentional that "since" is inclusive? I think that would differ
from the usual interpretation in git/b4 so unexpected. Even then such
off-by-one error (misunderstanding) would still not explain rewriting
one side on the merge further in the history.
Vlastimil
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2025-06-03 12:54 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-31 15:00 [GIT PULL] hardening fixes for v6.16-rc1 Kees Cook
2025-05-31 18:20 ` Linus Torvalds
2025-05-31 19:21 ` Konstantin Ryabitsev
2025-05-31 19:57 ` Konstantin Ryabitsev
2025-05-31 21:36 ` Al Viro
2025-06-01 1:06 ` Kees Cook
2025-06-01 2:22 ` Stephen Rothwell
2025-06-01 2:35 ` Linus Torvalds
2025-06-01 5:42 ` Kees Cook
2025-06-01 7:42 ` Kees Cook
2025-06-01 14:40 ` Konstantin Ryabitsev
2025-06-01 15:38 ` Kees Cook
2025-06-01 17:58 ` Konstantin Ryabitsev
2025-06-01 18:56 ` Kees Cook
2025-06-03 12:55 ` Vlastimil Babka
2025-06-01 17:12 ` Linus Torvalds
2025-06-01 17:49 ` Konstantin Ryabitsev
2025-06-01 18:24 ` Linus Torvalds
2025-06-03 12:42 ` Christian Brauner
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.