This month felt longer than others but I feel like that was because I was a lot more spread out in the work that I was doing. Let’s dive in, shall we?
Linux kernel patches / backports
[PATCH] fbmem: Correct position of '__maybe_unused' in proc_fb_seq_ops: A common mistake people make is splitting “struct ” with an attribute, in this case “__maybe_unused”, which clang warns about while GCC does not. This causes a warning in all of our builds. Unfortunately, this patch did not actually make it into mainline because Linus fixed it himself.
[PATCH] vmlinux.lds.h: Handle decrypted data section with !SMP: Kees Cook enabled orphan section warnings in 5.10, which means the linker will warn when a section is not handled by a linker script. Intel’s 0day bot turned up a randconfig that triggers a warning that will probably never be seen otherwise so I sent a patch to get that cleared up.
Backport of 1139aeb1c521 for all supported stable branches: This was a series of backports to the stable kernels for a warning about intentional misalignment, which impacted ChromeOS and will impact Android when they upgrade their version of clang.
UPSTREAM: crypto: arm/curve25519 - Move '.fpu' after '.arch': Our continuous integration tests Android trees since they are one of the biggest downstream consumers of our work (go figure, Google started this…) and this upstream patch is needed to build
[PATCH] Revert "ASoC: q6dsp: q6afe: remove unneeded dead-store initialization": Two patches that fixed the same Clang static analyzer warning were merged, which actually ended up introducing use of an uninitialized variable, which Intel’s 0day build robot thankfully pointed out to us.
Revert "UPSTREAM: usb: gadget: f_uac2: validate input parameters": A mismerge in the Android trees broke our continuous integration so I sent this in to get it working again.
[PATCH] x86: Fix location of '-plugin-opt=' flags: Someone reported a panic in the AMDGPU driver, which I helped track down to the fact that the stack alignment was not being passed along to the linker for LTO due to a Makefile variable clobber. This patch fixes it up and ensures we do not have something like this happen again. This will eventually be added to LLVM’s IR so that this flag is not necessary.
[PATCH 0/3] hexagon: Fix build error with CONFIG_STACKDEPOT and select CONFIG_ARCH_WANT_LD_ORPHAN_WARN: The Hexagon architecture is special because it is the only architecture in the kernel that cannot be built with GCC; it can only be built with LLVM. Qualcomm got it working upstream in v5.13-rc1 then within a couple of weeks, it was broken again because of some unnoticed bitrot. This patch series fixes it up and helps make sure it should not happen again.
[PATCH] powerpc/barrier: Avoid collision with clang's __lwsync macro: An upstream LLVM change broke all of our PowerPC builds back to 4.14 due to a builtin macro defintion coliding with an already existing defintion in
arch/powerpc. This patch fixes it up by undefining the macro because the kernel does not want the builtin version.
[PATCH] MAINTAINERS: Add Clang CFI section: This patch solidifies the path for CFI patches to go upstream.
Patch review and input
This month had quite a lot of review and patch testing, maybe more than the previous month. Code review is so critical for the success of these projects so it is important to do it quickly and well due to the velocity of both LLVM and Linux. There When possible, I link directly to my response but sometimes, the link is to the main post and my response can be seen inline.
Issue triage and reporting
As always, a little bit all over the place, LLVM and kernel issues, revisiting old problems, and triaging/reporting new ones :)
Way more continuous integration work this time around, namely due to the additional testing with Android’s LLVM and regressions or changes upstream.