June 2021 ClangBuiltLinux Work

Linux kernel patches ANDROID: sched: Gate sched_stat tracepoint exports on CONFIG_SCHEDSTATS: One of those instances where a tangential change in the Android trees broke our continuous integration. Our CI tests some 32-bit ARM configurations because certain Android OEMs care about them but these configs are not tested by the actual Android team, meaning we find breakage that they do not. [PATCH net-next] net: ks8851: Make ks8851_read_selftest() return void: clang implemented GCC’s -Wunused-but-set-variable and this instance was found by Intel’s kernel test robot....

July 1, 2021 · 8 min · Nathan Chancellor

May 2021 ClangBuiltLinux Work

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....

June 1, 2021 · 6 min · Nathan Chancellor

April 2021 ClangBuiltLinux Work

Another month down! Feels like I just wrote the March 2021 post… but I suppose that is what happens when your project moves super quickly :) Linux kernel patches [PATCH] ACPI / CPPC: Replace cppc_attr with kobj_attribute: I discovered this issue as part of my testing of Sami Tolvanen’s Control Flow Integrity series (more on that below). There are probably many more of these lurking because this pattern is hard to spot without runtime testing....

April 30, 2021 · 7 min · Nathan Chancellor

March 2021 ClangBuiltLinux Work

Another month, another post about the work that I have done as a kernel/compiler developer! One of the highlights this month is that I got LLVM commit access so I can merge my own patches into LLVM, which I did twice so far. Linux kernel patches powerpc/fadump: Mark fadump_calculate_reserve_size as __init: LLVM 13 switched over to the New Pass Manager (NPM), which has impacted some inlining decisions, which in turn exposed some bugs in section annotations....

April 1, 2021 · 6 min · Nathan Chancellor

February 2021 ClangBuiltLinux Work

As some of you may or may not know by now, I am now employed by the Linux Foundation to help improve Linux security. The primary way that I am doing that is through the work I do for ClangBuiltLinux, of which I am an official maintainer. Linux kernel patches First and foremost, I am a Linux kernel developer, meaning that I love sending kernel patches. Getting familiar with git send-email and the standard Linux kernel workflow can be difficult but now that I am used to it, I find other things cumbersome....

February 28, 2021 · 8 min · Nathan Chancellor

Working with git bisect

Before Google+ shut down, I had a post on there giving a brief overview of git bisect, which a lot of people found useful. Unfortunately, I forgot to save it and move it somewhere else before the shutdown deadline. As a result, I am going to redo it here and spice it up a bit. One caveat before I start: there is great official documentation for git bisect, from which I have taken quite a bit of information....

April 17, 2020 · 14 min · Nathan Chancellor

The art of git revert

I have always loved reading good commit messages and I have tried myself to write good commit messages to inspire others to do the same. I see good commit messages as important for two reasons: it allows people who work on a project afterwards to understand the context behind a change (so that you don’t have a denvercoder9 situation) and it allows other people to get familiar with your project by fully understanding the why behind a change....

April 15, 2020 · 3 min · Nathan Chancellor

Creating WSL 2 distributions from LXC images

I have been a big fan of Windows Subsystem for Linux 2 as I need Windows for school but I am so used to the command line for remoting into my server and automating various tasks locally. For those of you who do not know, WSL 2 uses a Linux kernel under the hood (which I customize here) and all of the various distributions that you can run are basically containers on top of it....

April 15, 2020 · 3 min · Nathan Chancellor

Building and using Cuttlefish

Recently, I stumbled upon a talk that Alistair Delva, a Google engineer, gave at the 2018 Linux Plumbers Conference around Cuttlefish, an Android Virtual Device (AVD) that is used to validate the Android platform virtually (i.e. without a separate device). This is something that is really cool because it makes it easy to follow along with upstream Android development and see what changes they are making under the hood, all from adb shell....

January 31, 2020 · 13 min · Nathan Chancellor

Building the WSL 2 kernel with Clang

Recently, I built a computer for school that I installed Windows 10 Pro on (link to the current specs if you are curious). I was a little bummed about leaving Chrome OS because I was going to lose my local Linux development environment; however, Windows Subsystem for Linux is a thing and it has gotten even better with WSL 2, as it is actually running a Linux kernel so there is full Linux compatibility going forward....

December 17, 2019 · 4 min · Nathan Chancellor