|
|
Subscribe / Log in / New account

LWN.net Weekly Edition for June 17, 2021

Welcome to the LWN.net Weekly Edition for June 17, 2021

This edition contains the following feature content:

This week's edition also includes these inner pages:

  • Brief items: Brief news items from throughout the community.
  • Announcements: Newsletters, conferences, security updates, patches, and more.

Please enjoy this week's edition, and, as always, thank you for supporting LWN.net.

Comments (none posted)

Fedora and supply-chain attacks

By Jake Edge
June 16, 2021

The specter of more events like the SolarWinds supply-chain attacks is something that concerns many in our communities—and beyond. Linux distributions provide a supply chain that obviously needs to be protected against attackers injecting malicious code into the update stream. This problem recently came up on the Fedora devel mailing list, which led to a discussion covering a few different topics. For the most part, Fedora users are protected against such attacks, which is not to say there is nothing more to be done, of course.

The SolarWinds attacks subverted the normal update mechanism of various tools to install malware on systems throughout much of the US government; the malware then exploited other flaws to get access to email and other data. Huzaifa Sidhpurwala posted a message to the mailing list on June 11 wondering whether the rekor tool might be useful in helping to prevent similar attacks against Fedora. Rekor comes from the sigstore project that was announced by the Linux Foundation back in March.

Sigstore is meant as a mechanism to securely record cryptographic signatures of binaries, packages, container images, and similar build artifacts in a tamper-proof ledger. The project was founded by Red Hat, Google, Purdue University, and the Linux Foundation. The press release announcement outlines the problem being solved:

Very few open source projects cryptographically sign software release artifacts. This is largely due to the challenges software maintainers face on key management, key compromise / revocation and the distribution of public keys and artifact digests. In turn, users are left to seek out which keys to trust and learn steps needed to validate signing. Further problems exist in how digests and public keys are distributed, often stored on websites susceptible to hacks or a README file situated on a public git repository. sigstore seeks to solve these issues by utilization of short lived ephemeral keys with a trust root leveraged from an open and auditable public transparency logs.

While it may well be true that the majority of projects on GitHub, GitLab, and other project-hosting sites are not signing their artifacts, that is not the case for most Linux distributions. For Fedora, RPM packages are signed and those signatures are checked by the DNF package manager. Other distributions have similar mechanisms. But there are still situations where some kind of external log of the signatures might be useful.

For example, if the Fedora signing keys were to ever be compromised or subverted, attackers could use the keys to sign malicious packages, which DNF would happily accept. But that means the attackers need to be positioned such that they can either intercept the DNF traffic (difficult with HTTPS) or tamper with the package repository. Even without a key compromise, a malicious (or compromised) package repository could hold back some updates to try to ensure that vulnerabilities in those packages continue to be present on the client systems. For the official Fedora mirrors, the metalink feature (originally added to Yum, the DNF predecessor) protects users by skipping mirrors that are more than three days behind in keeping up-to-date with the distribution's package updates.

In the posting, Sidhpurwala noted that Linux distributions, "which are made of thousands of components built from sources they [don't] even have control over", are potentially more vulnerable to supply-chain attacks because of that lack of control. One way that might start to be addressed is to be able "to ensure that there is no distribution point tampering of binaries shipped in Fedora". He wanted Fedora developers to start thinking about how a tool like rekor might be used to help prevent those kinds of problems. It would seem, though, that there is no huge unfilled hole that an immutable log of package hashes would solve, though there are use cases where it could perhaps be helpful.

Björn Persson wondered what "distribution points" were meant: "Repository mirrors? The master repository? mirrors.fedoraproject.org?" He noted that mirrors cannot modify packages (without the key), but that they could perhaps withhold updates; "Is that a thing that Rekor could prevent?" The sigstore web site might have helped answer the latter question, but it was not usable in his eyes:

On that page I can't see anything but a page header and a pointless animation. Even the text that is right there in the HTML code is hidden. Instead it wants me to execute a bunch of Javascript from at least three different domains. When a website expects me to execute some unknown program before they'll even tell me who they are or what they do, then I'm much more likely to just ignore that website.

That is, of course, a common complaint about JavaScript-only web sites these days, but it is perhaps a bit ironic that information about a security-related project is "hidden" in that way. In any case, Neal Gompa filled him in on sigstore, though Gompa was fairly dismissive of the project, at least so far. Persson had mentioned the ability to sign the repository metadata as another level of protection for Fedora, but Gompa complained that it has not been implemented for the Fedora repositories.

Gompa said that openSUSE signs its RPM repository metadata without any problems; in another message, he noted that CentOS added the feature in 2018. But Fedora infrastructure lead Kevin Fenzi pointed out that there have been numerous problems in trying to add the feature to Fedora along the way. But he is not opposed to doing so eventually:

I'm ok with enabling signed repodata when it is possible to do so and don't cause pain and suffering for our users. This has in fact always been my answer to this. It's not a priority for me personally because metalinks handle almost all the cases. The only things that would be improved by signed repodata are local mirrors that sync without checking for the mirror they sync from being up to date in mirrormanager.

Fenzi also described more of the details of the protection that is provided in the default case (where systems get their updates from the Fedora repository mirrors):

In the default configuration you get a metalink from mirrors.fedoraproject.org. That metalink has checksums for the last 2 repomd.xml files in it. If a mirror you go to then offers you a incorrect repomd.xml or any files (which are in turn checksumed in repomd.xml) dnf will treat the mirror as broken and skip to the next one.

So, assuming the Fedora keys are not compromised, which would allow an attacker to sign anything as if it came from Fedora, of course, then the majority of use cases are covered even without adding signed repository data. Local mirrors, which are typically run by organizations to reduce internet traffic and/or to support systems behind a restrictive firewall, might need some additional features, however. (As Fenzi put it: "We could do more for local mirrors indeed."

But, however unlikely it is, there is always a non-zero probability of a signing key compromise; folks unwinding a catastrophic event of that nature might find a log like that created by rekor to be of some use. Luke Hinds, who is the security engineering lead for Red Hat, described how that could work:

Rekor is a transparency log that stores signing manifests into a merkle tree, it uses the same back end technology as certificate transparency

Rekor has what are termed 'types' that allow it to ingest custom schemas and hash those into the transparency log. For those that don't know, a transparency log is immutable / append only datastore that is publicly auditable. One of the types we have is an rpm type to ingest and store signing materials from an RPM package.

Why is this useful? You get a timestamped / tamper resistance record of all signing events. This is very useful for understanding the exact blast radius of a key compromise and monitoring for suspicious events. Most of the time you will not interact with the tlog, it would sit off to side hashing in entries, so it would make no changes to a maintainers working flow or not being in any build path where it could cause an outage. It's the sort of system most would not be aware of, unless something awful happens, and then it has a lot of value, as you have an immutable record of events.

The "not being in any build path" part was confusing and Hinds walked that part back, but the idea is interesting, though it may be of limited utility. If the Fedora build infrastructure were set up to record all of its legitimate signing activities in the log, any package with a valid signature that did not appear there would be a red flag indicating a key compromise. That, of course, assumes that the attacker cannot also add entries to the log, which may or may not be the case.

As Miloslav Trmac pointed out, though, the rekor log may not actually provide anything new: "[...] any other logging solution from that build/signing system (just send it to a write-only log host) would have very similar security properties, it seems to me." In order for it to be truly useful, Trmac said in a follow-up, clients would need to query the log before installing an RPM to ensure that it is on the list. But, of course, an attacker who can create malicious packages with valid signatures may well be able to use the same machinery to add a log entry. Beyond that: "Given the above discussion about signing metadata, presumably a much smaller change, what makes such a Rekor integration more likely to get done?", Trmac asked.

If rekor (or something like it) is truly going to be useful for Fedora, it would seem that a clearer picture of what kinds of threats it would target—and how it would be superior to the existing protections—is needed. It sometimes seems that blockchain-type mechanisms (broadly defined) can be seen as a solution in search of a problem. While sigstore may well have applications for other types of projects—supply-chain attacks are real and dangerous, after all—Linux distributions may not be a good fit for this kind of tamper-proof log. Distribution security is not perfect, by any means, but the developers on those projects have been grappling with these kinds of problems for a really long time at this point. For Fedora, it probably makes more sense to try to fill in some of the holes that have been identified before climbing up on the Merkle-tree craze.

Comments (24 posted)

Audacity gets a CLA

By Jake Edge
June 16, 2021

The Audacity multi-track audio editor and recorder got its start in the previous century; it is a popular application that is available for multiple platforms, and it is licensed under the GPLv2 or later. But Audacity has been acquired by a newly formed organization called Muse Group; that event has caused something of an uproar in its community. The problem, at least in part, is the new Contributor License Agreement (CLA) required to contribute to Audacity.

The acquisition of the project was announced in an early-May YouTube video posted by Martin Keary ("Tantacrul"); that news was subsequently confirmed on the Audacity web site. In the video, Keary talks about what is planned for Audacity:

Audacity has just joined Muse Group, a collection of brands that includes another popular open source music app called MuseScore, which I’m currently in charge of. And since things are going rather well at MuseScore, I was asked to step up and also manage Audacity in partnership with its open source community. And just like we’re doing at MuseScore, we’re now planning on significantly improving the feature set and ease of use of Audacity – providing dedicated designers and developers to give it the attention it deserves – while keeping it free and open source.

In general, the reaction to the announcement (e.g. at Hacker News and again the next day) was fairly positive; there is a belief that Audacity could use some work on its user interface and that Keary has done good work on the MuseScore interface and elsewhere. But it did not take all that long for a clash between the community and the project to arise. A pull request by Dmitry Vedenko to add a telemetry feature was met with a large amount of dissent.

The feature, which was meant to be opt-in at install time, would report anonymous information to Google and Yandex; telemetry could be also be configured out at build time, though it would be present in the builds made by the project. Hundreds of comments on the pull request were made—nearly all unhappy with it due to privacy concerns—which led to the feature, as originally proposed, being dropped. In that message, Keary said that there is a need for opt-in crash and error reporting in Audacity, but that any data sent will be hosted by the project (or Muse Group), not Google and Yandex. Meanwhile, though, there is still interest in more-intrusive application-usage data if an acceptable mechanism is found for it:

Telemetry is a practical tool that tells us a lot about how an app is performing or underperforming (is this new feature being used a lot? Is this button being discovered? etc.) We assumed that making it opt-in would allay privacy concerns but since this isn't the case, we are dropping it. In the future, we may want to determine if there are any acceptable alternative solutions that could achieve the same goal. Feedback would be appreciated on this point. In the meantime, I will continue user testing, interviewing, reading feedback and conducting surveys to learn more about what our users want.

What was acquired?

Something that became clear from various discussions on GitHub and other forums is that people in the community were confused by what was actually acquired when Audacity "joined Muse Group". While the rest of the software industry is notoriously acquisition-happy, the free-software world has generally avoided those kinds of changes, in part because the code is often "owned" by the contributors—and the community. A request for clarification that was linked in various places raised a number of questions about the acquisition, such as:

  • Is it even possible for a company to acquire a free and open source project licensed under the GPL?
  • How exactly did Muse Group acquire Audacity?
  • What rights and power does Muse Group legally have over the Audacity project?
  • Can Muse Group even legally claim ownership over the project or do they simply own the trademarks to the name and logo?

It took a bit, but Daniel Ray ("workedintheory"), Muse Group's head of strategy, answered on May 25. In a nutshell: "Muse Group acquired the Audacity trademark and project infrastructure in addition to a license to the source code from contributors to the Audacity project in the form [of a] CLA." In a follow-up message, he confirmed that Muse Group had gotten signed CLAs from all of the relevant Audacity developers; that means that the company has control of the licensing of the code moving forward as well. Ray also pointed to a press release about the acquisition from April 30 that seemingly flew under the radar; for one thing, it filled in the strongly positive reaction from the project's founders, which was something that had been asked about.

But, in an unsurprising development, that same day Ray posted information about the CLA that would be required for contributions going forward. In it, he said that Muse Group intended to update the Audacity license to GPLv3 in order to make Audacity compatible with Virtual Studio Technology 3 (VST3) plugins, and with MuseScore, which recently switched to GPLv3. It is not entirely clear why the GPLv2+ license that Audacity has would be a problem for sharing code with either VST3 or MuseScore, however. He did try to reassure the community, though: "Naturally, Audacity will remain free and open source with no artificial limitations or paid tiers."

But there are platforms like iOS where the GPL can be an impediment, he said, so Muse Group wants the flexibility to be able to further relicense if need be. In addition, it may offer additional services:

We will likely offer separate cloud services that Audacity users can take advantage of if they choose. These services will fund the future development of Audacity, in much the same way that MuseScore.com funds the development of MuseScore composition software.

As might be guessed, that set off another lengthy thread. Numerous commenters pointed out that, in their opinion, the reasons specified by Ray were not sufficient to overcome the problems that stem from a CLA of that nature. The crux of the matter is that the CLA puts Muse Group in a position to use contributions from the community in other products, even if Audacity itself remains free. As Ray put it: "The CLA also allows us to use the code in other products that may not be open source, which we intend to do at some point to support the continued development of Audacity." It is worth noting that while Ray and Keary have both committed to keeping Audacity available as free and open-source software, nothing in the CLA binds the company to doing so.

Audacity's future

There has been talk about forking the project or starting over from scratch, but it is not at all clear how serious any of that is. The Audacity team was obviously involved in the transaction, at least to the point of agreeing to sign the CLA for their contributions, though financial terms have not been disclosed. The team has been largely silent throughout the uproar, perhaps because much of the unhappiness is being expressed by Audacity users or unconnected FOSS community members, not project contributors. In his follow-up linked above, Ray suggested that may explain the lack of engagement:

Mostly, I don't think they really have too much to say much because nearly all of these people who are commenting are not people they know or that have had anything to do with the project in the past. This sudden influx is not from the Audacity contributor community, not really sure if even from the user community, but seem to place demands on a project they were never a part of.

I can see why they would prefer not to say too much.

A lengthy message from Shane Mueller gives his reasons for signing the CLA for his 15-year-old contributions to Audacity. He is impressed with what the team of "3-4 volunteer programmers and handful of regular non-programmer contributors" has done with the application over the years, but worries about the future:

The volunteer team is small and not growing, not young and getting older, mostly not really pro-audio or usability experts, and probably won't be contributing at all in another 10-15 years. Audacity will literally end if a couple key contributors took a step back from the project or retire. It will have no chance of even doing a new release, let alone putting substantial effort into things that will make more than incremental improvements. When people call for a fork, I wonder where they have been for the last 20 years or so--if they were really passionate enough to contribute to a mature project (ugh) for amateur users (ugh) using c++ (ugh), wx (ugh), having an ugly UI (ugh) and relying on large mishmash of audio libraries to figure out (ugh), all to enable cross-platform capability (ugh), I think they would be doing it already.

Mueller said that he would have been happy to sign a CLA for a hypothetical Audacity non-profit foundation—and still would be. But it takes a lot of time and effort to set up that kind of organization, which still does not solve the lack-of-contributors problem. Effectively, he does not see a good future for Audacity without a new approach; he is not interested in working on that himself, but is "willing to support those who are involved and let them try this new model for how the project will be sustained into the future".

It would seem that Muse Group has the current Audacity team on-board with its plans, and has added some additional developer-power to the project. That would seem to bode well for improvements, probably at a much more rapid pace. But the CLA may deter community contributions to the project going forward. Muse Group would seem to have taken that into account in its planning—in the near term, it may be no real change from the status quo.

If there truly is a groundswell of interest in an independent Audacity, obviously a fork is possible at any point while the code is available under the GPL. Or an interested group could start over; Mueller's message and other comments seem to indicate that Audacity might not have the most pleasant code base to work with. But it seems fair to say that if all of the developers with any substantial copyright in Audacity are happy with the Muse Group and its plans, that is clearly the right path for the project, even if it does not mesh entirely cleanly with what the FOSS world has come to expect. It may well be the only plausible way forward for the project.

Comments (22 posted)

Implementing eBPF for Windows

June 10, 2021

This article was contributed by Quentin Monnet

Extended BPF (eBPF), the general-purpose execution engine inside of the Linux kernel, has proved helpful for tracing and monitoring the system, for processing network packets, or generally for extending the behavior of the kernel. So helpful, in fact, that developers working on other operating systems have been watching it. Dave Thaler and Poorna Gaddehosur, on behalf of Microsoft, recently published an implementation of eBPF for Windows. A Linux feature making its way to Windows, in itself, deserves attention. Even more so when that feature has brought new degrees of programmability to the Linux kernel over the last few years. This makes it especially interesting to look at what the new project can do, and to ponder how the current ecosystem might evolve as eBPF begins its journey toward Windows.

Gearing up with open-source components

Simply named "eBPF for Windows", the project targets Windows 10 and Windows Server 2016 (and later). It is not a fork of the Linux code, presumably to avoid any GPL-related issues. Instead, Windows gets a different implementation, but not from scratch. Microsoft's project relies on pre-existing open-source components; it adds the missing pieces along with the necessary shims to interconnect them and to integrate them with Windows internals. It is available from GitHub as ebpf-for-windows, under the MIT license.

One of those components is uBPF, an independent user-space eBPF interpreter and an x86_64 just-in-time (JIT) compiler for eBPF. In 2015, which was the early days for eBPF, uBPF was introduced as a non-GPL implementation of the technology. It has seen little activity since then, but several projects, including DPDK, reuse its code. The Windows project pulls uBPF as a Git submodule, and literally does a #include of its code to embed the interpreter and the JIT compiler. uBPF only supports basic programs; the code in ebpf-for-windows extends it, for example to implement eBPF maps and their related helper functions.

The tooling side for handling eBPF programs on Windows should look familiar to Linux users. The Clang/LLVM back-end remains the main tool to compile programs written in C into eBPF bytecode instructions. The netsh command-line tool, which offers program management and introspection similar to some extent to bpftool, relies on a shared library that should provide an API compatible with libbpf, thus ensuring the portability of loader applications.

The last component used by the project is the PREVAIL verifier, which is another Git submodule that gets pulled into ebpf-for-windows. PREVAIL was developed as part of a research project involving VMware Research, and is best described in the accompanying publication (note that some of the content is now out-of-date). Unlike the Linux verifier, it relies on formal methods to determine the safety of programs. It uses an abstract interpretation layer that aggregates the states after several execution streams rejoin, meaning that, for example, the states of the registers for the different branches of an if/else block are merged together at the end of that block to avoid producing too many combinations of paths.

By contrast, the Linux verifier checks all paths independently: two consecutive if/else blocks produce four paths to explore, rapidly leading to a "path explosion". But the Linux verifier mitigates this by "pruning" some parts of the paths that are known to be safe, once they have been reached and validated from another branch.

PREVAIL is claimed to be better at recognizing valid programs than the Linux verifier, including programs with loops. It also scales better with complexity, and can validate some programs for which Linux would go over its limit of one-million validated states, thus would fail verification. However, the Linux verifier completes validation more quickly when it accepts a program, and consumes less memory. It is also finely tailored to support all of the features that the programs can use and their corner cases, while PREVAIL misses checks for several elements like eBPF-to-eBPF function calls, packet reallocation (when its size changes), or 32-bit subregister tracking. PREVAIL is under active development, and Thaler is contributing to it along with the creator and maintainer, Elazar Gershuni. Together they intend to address some of these limitations: they recently added support for checking termination of eBPF programs.

Taking marks

Equipped with these components, eBPF for Windows provides a working eBPF runtime. But the project is in its infancy. It brings support for two eBPF hooks: XDP (for fast packet processing) and socket binding (equivalent to BPF_CGROUP_INET4_BIND and other related attach points on Linux). It implements the most basic map types: arrays and hash maps.

The repository contains a few examples. The Getting Started guide explains how to set up an XDP program to drop UDP packets with an empty payload in order to protect a DNS server from UDP flood attacks. Another sample program attaches to the hook for socket binding, and can be configured to enforce a limit on the number of sockets to which processes can bind. The program increments or decrements per-process counters (stored in a map) on bind and unbind operations.

Picking a direction

These samples are simple, but the project is just getting started: Where is it heading? The authors made it clear in their blog post that they aim at providing good compatibility with Linux eBPF: "The intent is to provide source code compatibility for code that uses common hooks and helpers that apply across Operating System ecosystems."

Some existing hooks and helper functions, of course, are tightly linked to Linux internals. Some features, like direct calls to kernel functions, will be downright dependent on the operating system. But for the rest, the objective is to reach some level of parity with Linux, including for tracing kernel and user-space functions by reusing, for example, Event Tracing for Windows or DTrace. Tracing user applications can probably work as they do for Linux.

Regarding kernel tracing, the two systems do not have the same internal functions but, at least, through eBPF they should be able to share a common way and workflow to attach probes. Interestingly, the authors of the project already have a new hook in mind to implement file-system "mini-filters" with eBPF on Windows. It seems likely that they will add more in the future. In defining a common way to probe a kernel, perhaps the program hooks themselves will end up as an implementation detail if the eBPF workflow, tooling, and runtime has the same capabilities on all systems and constitute the core of that "interface".

Currently, the disparity in features translates into a number of issues being opened on the GitHub repository. Contributions to the different components will also be necessary. The authors have pushed some of their changes to uBPF and have been contributing to PREVAIL for several months already. It is worth noting how they intend to deal with maps: they would like to reuse the implementation from generic-ebpf, which is yet another uBPF-based runtime that targets FreeBSD in particular.

Alan Jowett, from Microsoft, summarized the project's motivation as: "Any code that could be generic should be moved to a more generic project and pulled in via a sub-module." This reads as an intent to upstream everything possible to uBPF, PREVAIL, and possibly other projects in the future, so as to retain only the minimal amount of shims in ebpf-for-windows and to make the generic components reusable by other projects.

The road ahead

Ideally, most eBPF programs would behave the same way on Linux and Windows. Some engineering effort will be necessary to reach that point. By reimplementing an existing technology, Microsoft saves on the design process, but it will have to catch up with the specific functionalities. There is more than a simple instruction set to eBPF: it comes with many hooks, maps, helpers, user space operations, and features like tail calls, function calls, BPF type format (BTF) information, and many others. uBPF lacks most of these. These items may gain support in time, a fair portion of them should hopefully be generic enough to make eBPF programs portable. Adding JIT compilers for new architectures should not be a major issue, DPDK has one for arm64 already. Any feature that relies on kernel BTF information will likely be tied to an operating system, though.

Compatibility for the verifiers is another concern. Of all the design choices for the Windows implementation, the use of PREVAIL is one of the most interesting because it already has some advantages over Linux. It accepts a larger range of valid programs and is less affected by the path explosion, to the detriment of performance and exhaustiveness of the checks. As a consequence, some programs may be considered valid only by Linux, others only on Windows. This should provide an incentive to improve the Linux verifier, to make it faster on complex sequences, and perhaps help it validate more programs. Full parity will definitely be a challenge.

One may wonder how important it is to ensure cross-operating-system compatibility for eBPF. For a start, Microsoft's interest in the technology would likely be limited if it could not support existing programs. The company could just as well develop its own solution, without bothering to integrate external components. Portability will be necessary to limit ecosystem fragmentation and, more generally, to warrant adoption on Windows. It will be particularly important at a time when the generic-ebpf project might benefit from the exposure and regain some activity. That would provide support on yet more systems and, since static linking is being introduced in libbpf, paving the way to the creation of eBPF libraries.

However, the effort cannot come from Microsoft alone. Synchronization with the existing eBPF community will be essential to make the technology progress in a way that all systems can support. On Linux, eBPF has been used in production for some time, at scale, by big players like Facebook, Google, and Netflix. It has been spreading over the Kubernetes ecosystem for networking, observability, and security with projects like Cilium. There is no way that Linux developers will put eBPF "on hold" to wait for Windows. Thaler and Gaddehosur are aware that a lot of communication will be required:

We are announcing this now while the project is still relatively early in development because our goal is to work in collaboration with the robust eBPF community to make sure that eBPF works great on Windows, and everywhere else.

The project has a dedicated Slack channel named #ebpf-for-windows on https://ebpf.io/slack. Regular meetings are set up until July, at least, to triage and address the GitHub issues. A dedicated mailing list should follow.

The degree of involvement that will come from Linux developers will be decisive, but is hard to predict yet. The announcement of eBPF for Windows is still fresh: there were comments on social networks (enthusiastic overall, with a few expected mentions of the "embrace, extend, and extinguish" strategy — Microsoft has a history), but little reaction has emerged from the Linux world for now.

The journey is just starting

The "eBPF for Windows" project is ambitious but, in its early days, it misses many features supported on Linux: some parity on program types, map types, helpers, and other items will be required to make it viable. This could explain the absence of a clear reaction from the Linux developers, who may be waiting to see if the new implementation lives up to its promise. To show that it does, the authors will need to catch up with development to support more complex use cases on Windows. They must also draw the interest and participation of more contributors, external to Microsoft, if they want to ensure the success of the project.

If they succeed, developers may eventually benefit from eBPF code blocks shared as libraries common to the two systems. User-space libraries, tooling, applications, and compatibility test suites could be extended and run across several environments. The eBPF ecosystem would then profit from fresh ideas coming from the Windows world, and friendly competition will hopefully lead to performance improvements on both sides. As an optimistic vision for the long term, assuming a common basis can be found to express equivalent probes for both systems, eBPF programs might end up as some form of control-plane API to manage networking and observability on different types of nodes. Such interfaces are starting to emerge in cloud-native computing, and a cross-environment eBPF would likely play a role in this.

Of course, there is much to accomplish before that; the project is just starting. Yet, as it stands, this is already a formidable acknowledgment of the benefits eBPF brought to Linux and of its potential for the future. The realization of this potential will depend a lot on the dialogue and synchronization between the different communities. eBPF has just stepped outside of its Linux home to venture into the world.

Comments (16 posted)

Code humor and inclusiveness

By Jonathan Corbet
June 11, 2021
Free-software development is meant to be fun, at least some of the time. Even developers of database-management systems seem to think that it is fun; there is no accounting for taste, it seems. Part of having fun is certainly allowing the occasional exercise of one's sense of humor while working on the code. But, as some recent "fix" attempts show, humor does not always carry through to developers all over the planet. Balancing humor and inclusiveness is always going to be a challenge for our community.

There is a function in the kernel scheduler that will, if things go badly wrong, inform users that a bug is present, describing it as "arch topology borken". The message is, of course, breathtaking in its clarity; users will immediately know what to do when they see it. Recently, though, a well-intentioned developer sent a patch changing the message to read "broken" instead. This patch was not accepted, but it did result in a brief discussion explaining the nature of the intended joke to the submitter.

The following day, somebody else attempted to fix another scheduler function containing a comment that cites "histerical raisins". This time, the poster was instructed to search for "humour", which is rather less illuminating. Other examples abound; one of the more amusing such attempts came last year, when a developer concluded that the title of this document required a spelling correction; the response this time politely declined the patch, but encouraged the poster by saying "rest assured that you did get [the] point!".

Anybody who has spent any amount of time trying to function in a non-native language understands that humor can be difficult. It is deeply tied to both the language it is expressed in and the specific context where it is found. Words that fluent speakers find funny can simply fly over the head of those who are less proficient, and attempts to be funny in a non-native language do not always go well. Your editor has a hard time getting a laugh from native English speakers; he has learned that it's better not to even try in other settings.

Source code is meant to be precise and understandable. Comments are there to help when the code itself is not enough to explain why a particular action is taken. When those comments contain plays on words, creative misspellings, or jargon-laden inside jokes, they will become less clear to people who may be struggling to understand even plainly written English. Such readers will trip over the language in question, and some of them may then be moved to try to "fix" it. The result is a certain amount of confusion and lost time.

One possible solution could be to eliminate this kind of play on words as an impediment to global free-software development. As Zhen Lei said in the first discussion linked above: "Linux is an open-source code for the world, so it's better to use a more common word." If we stuck with common words, we would see less confusion, fewer "fixes" for intentional humor, and possibly better participation overall.

But, remember, free-software development is supposed to be fun as well as useful; that is part of why many of us got into it in the first place. Turning a free-software project into a humor-free zone would make it distinctly less fun, which could be seen as an inclusiveness problem in its own right. The cure could be far worse than the disease.

Fortunately, nobody is proposing any such thing. Most of us are agreed that life can only be improved by something that brings a little smile in the middle of an extensive code-reading session. With any luck at all, our code will continue to acquire the occasional comment that makes it clear that we do not take ourselves too seriously.

But that means we will also continue to receive the occasional "fix" from readers who were unable to appreciate a humorous turn of phrase and wish to straighten it out in some way. Those will be the best occasions of all to demonstrate that, indeed, we do not take ourselves too seriously. A curt response from a developer who clearly feels that their time is being wasted may turn away an aspiring contributor who we would much rather keep. A kind response, explaining the phrasing in question, will help that contributor appreciate the humor, improve their language skills, and get them to the point where, someday, they will embed some humor in useful code of their own. Others, silently watching the conversation, may also benefit.

For better or worse, English is the language of the free-software development community. English is not the native language of a majority of our contributors, though, and some of those contributors will struggle with it at times. But, with some patience, we can have our code and laugh at it too.

Comments (87 posted)

quotactl_path() becomes quotactl_fd()

By Jonathan Corbet
June 14, 2021
The quotactl() system call is used to manipulate disk quotas on a filesystem; it can be used to turn quota enforcement on or off, change quotas, retrieve current usage information, and more. The 5.13 merge window brought in a new variant of that system call that was subsequently disabled due to API concerns; its replacement is now taking form.

quotactl() has the following prototype:

    int quotactl(int cmd, const char *special, int id, caddr_t addr);

Quota manipulation is a filesystem-oriented operation, but quotactl() requires that the caller provide the name of the block device containing the target filesystem (as special). That can require users (who typically think in terms of mount points) or user-space tools to do a lookup to find out which block device underlies the filesystem of interest. For filesystems that do not have an underlying block device, quotactl() is not usable at all; among others, the UBIFS filesystem, which uses persistent memory for storage, is affected by this problem.

The new system call was introduced to address these issues:

    int quotactl_path(unsigned int cmd, const char *mountpoint, qid_t id,
    		      void *addr);

Rather than accepting a device name, quotactl_path() uses the path name of the mount point where the filesystem is to be found.

Shortly after this new system call was pulled into the mainline (during the 5.13 merge window), an LWN reader pointed out that quotactl_path() failed to follow contemporary best practices for system calls. In particular, it lacked a "flags" argument for future extensions, and there was no directory file-descriptor argument as found in system calls like openat2(). In response to those criticisms, the new system call was disabled in the 5.13-rc3 release so that the problems could be fixed.

On June 2, Jan Kara posted a proposed replacement for quotactl_path(). Rather than simply add the new parameters, though, the new call does away with the path name entirely:

    int quotactl_fd(unsigned int fd, unsigned int cmd, qid_t id, void *addr);

With quotactl_fd(), the caller is expected to provide an open file descriptor identifying the filesystem to operate on. The advantage of doing things this way is that the full complexity of handling the directory file descriptor, resolve flags, etc. can be deferred to openat2() rather than being reimplemented here. For usage involving multiple quotactl_fd() calls, reusing a file descriptor that only need be opened once should be more efficient anyway.

Note that there still is no "flags" argument. In this case, that should not be problematic; the system call can always be extended by adding new commands. In short, as Kara pointed out in the cover letter, the new system call looks a lot like ioctl(), with all the flexibility associated with that call.

Looked at from one angle, this incident could appear to be a failure of the process; how did a system call with these problems get into the mainline? Sometimes code is rushed into the kernel without adequate review, but this patch set was posted three times (in January, February, and March) before being merged. Developers clearly looked at the patches and a number of changes were made, but nobody caught the API problems.

But this episode could also be seen as an example of the process working exactly as it is supposed to. The period between the merge window and the 5.13 release is there to catch remaining issues, and this one was duly pointed out. The system call was immediately disabled to ensure that it would not be released in that form, after which it would likely have been necessary to maintain it indefinitely. And now a better replacement has been created.

That replacement has been reviewed (and approved) by a few relevant developers, including Sascha Hauer, the author of the original quotactl_path() implementation. It has not, as of 5.13-rc6, been pushed into the mainline kernel. Kara hasn't said whether he plans to get this work into 5.13 before its release; if so, the time to do so is quickly running out. The alternative is to push it during the 5.14 merge window; that would allow for another cycle of review to be sure that there are truly no more lingering issues. Given that this API has needed one rework and that 5.13 is due in less than two weeks, waiting may well prove to be the more prudent approach.

Comments (6 posted)

Page editor: Jonathan Corbet

Brief items

Security

Privacy analysis of FLoC (Mozilla blog)

Over on the Mozilla blog, Eric Rescorla looks into some of the privacy implications of the Federated Learning of Cohorts (FLoC), which is a Google effort to replace third-party cookies with a different type of identifier that is less trackable. But less tracking does not equal no tracking. "People's interests aren't constant and neither are their FLoC IDs. Currently, FLoC IDs seem to be recomputed every week or so. This means that if a tracker is able to use other information to link up user visits over time, they can use the combination of FLoC IDs in week 1, week 2, etc. to distinguish individual users. This is a particular concern because it works even with modern anti-tracking mechanisms such as Firefox's Total Cookie Protection (TCP). TCP is intended to prevent trackers from correlating visits across sites but not multiple visits to one site. FLoC restores cross-site tracking even if users have TCP enabled."

Comments (43 posted)

Google's fully homomorphic encryption package

The Google Developers Blog has this announcement describing the release of a fully homomorphic encryption project under the Apache license. "With FHE, encrypted data can travel across the Internet to a server, where it can be processed without being decrypted. Google’s transpiler will enable developers to write code for any type of basic computation such as simple string processing or math, and run it on encrypted data. The transpiler will transform that code into a version that can run on encrypted data. This then allows developers to create new programming applications that don’t need unencrypted data." See this white paper for more details on how it all works.

Comments (51 posted)

Privilege escalation with polkit: How to get root on Linux with a seven-year-old bug (GitHub blog)

On the GitHub blog, Kevin Backhouse writes about a privilege escalation vulnerability in polkit, which "enables an unprivileged local user to get a root shell on the system" CVE-2021-3560 "is triggered by starting a dbus-send command but killing it while polkit is still in the middle of processing the request. [...] Why does killing the dbus-send command cause an authentication bypass? The vulnerability is in step four of the sequence of events listed above. What happens if polkit asks dbus-daemon for the UID of connection :1.96, but connection :1.96 no longer exists? dbus-daemon handles that situation correctly and returns an error. But it turns out that polkit does not handle that error correctly. In fact, polkit mishandles the error in a particularly unfortunate way: rather than rejecting the request, it treats the request as though it came from a process with UID 0. In other words, it immediately authorizes the request because it thinks the request has come from a root process."

Comments (57 posted)

Kernel development

Kernel release status

The current development kernel is 5.13-rc6, released on June 13. Linus said: "Nothing particularly special to say about this - rc6 is certainly smaller than rc5 was, so we're moving in the right direction".

Stable updates: 5.12.10, 5.10.43, 5.4.125, 4.19.194, 4.14.236, 4.9.272, and 4.4.272 were released on June 10, followed by 5.12.11, 5.10.44, 5.4.126, 4.19.195, 4.14.237, 4.9.273, and 4.4.273 on June 16. Not content with those, Greg Kroah-Hartman has started the review process for 5.12.12, 5.10.45, and 5.4.127; they are due on June 18.

Comments (none posted)

Aya: writing BPF in Rust

The first release of the Aya BPF library has been announced; this project allows the writing of BPF programs in the Rust language. "Over the last year I've talked with many folks interested in using eBPF in the Rust community. My goal is to get as many of you involved in the project as possible! Now that the rustc target has been merged, it's time to build a solid foundation so that we can enable developers to write great eBPF enabled apps".

Comments (8 posted)

linux.dev mailboxes for kernel developers

Konstantin Ryabitsev has announced a new service providing @linux.dev mailboxes for people to use with kernel development. The documentation page has more information. "This is a BETA offering. Currently, it is only available to people listed in the MAINTAINERS file. We hope to be able to offer it to everyone else who can demonstrate an ongoing history of contributions to the Linux kernel (patches, git commits, mailing list discussions, etc)."

Comments (21 posted)

Distributions

Distribution quote of the week

I've been saying for years that as more and more consumers who just want a device which gives them those tools without a hassle move to just working on their phones and tablets, the share of Linux among people who actually want a computer will go up, and I think we're definitely seeing that among programmers, engineers, students, and gamers. Will that translate eventually to the general public? Maybe not, but that's okay. World domination isn't the only definition of success.
Matthew Miller

Comments (none posted)

Development

A possible copyright-policy change for glibc

The GNU C Library developers are asking for comments on a proposal to stop requiring developers to assign their copyrights to the Free Software Foundation. This mirrors the recent change by GCC, except that the community is being consulted first. "The changes to accept patches with or without FSF copyright assignment would be effective on August 2nd, and would apply to all open branches. The glibc stewards, like the GCC SC, continue to affirm the principles of Free Software, and that will never change."

Comments (none posted)

FSFE: REUSE Booster helps Free Software projects with licensing and copyright

The Free Software Foundation Europe introduces REUSE Booster. REUSE is a set of best practices to make Free Software licensing easier. "With REUSE Booster, we go one step further. We invite Free Software projects to register for getting help by the FSFE's legal experts. As the name suggests, this will boost the process of adopting the best practices as well as general understanding of licensing and copyright." The registration deadline is July 8.

Comments (3 posted)

Poettering: The Wondrous World of Discoverable GPT Disk Images

In a lengthy blog post, Lennart Poettering describes the advantages of using the unique IDs (UUIDs) and flags from the discoverable partitions specification to label the entries in a GUID Partition Table (GPT). That information can be used to tag disk images in a self-descriptive way, so that external configuration files (such as /etc/fstab) are not needed to assemble the filesystems for the running system. Systemd can use this information in a variety of ways, including for running the image in a container: "If a disk image follows the Discoverable Partition Specification then systemd-nspawn has all it needs to just boot it up. Specifically, if you have a GPT disk image in a file foobar.raw and you want to boot it up in a container, just run systemd-nspawn -i foobar.raw -b, and that's it (you can specify a block device like /dev/sdb too if you like). It becomes easy and natural to prepare disk images that can be booted either on a physical machine, inside a virtual machine manager or inside such a container manager: the necessary meta-information is included in the image, easily accessible before actually looking into its file systems."

Comments (60 posted)

Development quote of the week

The Google researchers examining these silent corrupt execution errors (CEEs) concluded "mercurial cores" were to blame – CPUs that miscalculated occasionally, under different circumstances, in a way that defied prediction. (That's mercurial as in unpredictable, not Mercurial as in the version control system of the same name.)

The errors were not the result of chip architecture design missteps, and they're not detected during manufacturing tests. Rather, Google engineers theorize, the errors have arisen because we've pushed semiconductor manufacturing to a point where failures have become more frequent and we lack the tools to identify them in advance.

The Register (Thanks to Jörg Sommer)

Comments (5 posted)

Page editor: Jake Edge

Announcements

Newsletters

Distributions and system administration

Development

Meeting minutes

Calls for Presentations

CFP Deadlines: June 17, 2021 to August 16, 2021

The following listing of CFP deadlines is taken from the LWN.net CFP Calendar.

DeadlineEvent Dates EventLocation
June 20 August 22
August 29
DebConf Online
June 20 October 11
October 12
Open Networking & Edge Summit + Kubernetes on Edge Day Virtual
July 4 September 15
September 17
X.Org Developers Conference 2021 Virtual
July 10 August 6
August 8
openSUSE.Asia Virtual Summit 2021 Faridabad, India
July 11 November 9
November 10
Open Source Strategy Forum New York New York, NY, USA
July 11 October 4
October 5
Open Source Strategy Forum London London, UK
July 11 September 29
October 1
Linux Security Summit Seattle, WA, and online
July 13 September 8
September 10
Linaro Virtual Connect Online
July 15 August 7 Raku Conference Online
July 15 September 16 Practical Open Source Information Online
July 18 October 6 OSPOCon Europe London, UK
July 23 August 18
August 19
eBPF Summit Virtual
July 24 August 14
August 15
OpenFest 2021 Sofia, Bulgaria
July 27 August 5
August 8
Nest with Fedora Online
August 13 September 20
September 24
Linux Plumbers Conference Online

If the CFP deadline for your event does not appear here, please tell us about it.

Upcoming Events

Events: June 17, 2021 to August 16, 2021

The following event listing is taken from the LWN.net Calendar.

Date(s)EventLocation
June 1
June 30
Ceph Month June Virtual
June 18
June 25
Akademy 2021 Online
June 18
June 20
openSUSE conference online
June 22
June 23
Postgres Vision 2020 online
June 23 Linaro and Arm CCA Tech Event Online
June 24
June 25
Build Meetup 2021 Virtual
July 9
July 11
State of the Map Online
July 13
July 14
Netdev 0x15 Workshops & Tutorials Online
July 19
July 23
Netdev 0x15 Main Conference Online
July 21
July 25
GUADEC Online
July 28
July 30
EuroPython 2021 Online
August 5
August 8
Nest with Fedora Online
August 6
August 8
openSUSE.Asia Virtual Summit 2021 Faridabad, India
August 7 Raku Conference Online
August 14
August 15
OpenFest 2021 Sofia, Bulgaria

If your event does not appear here, please tell us about it.

Security updates

Alert summary June 10, 2021 to June 16, 2021

Dist. ID Release Package Date
Arch Linux ASA-202106-23 apache 2021-06-11
Arch Linux ASA-202106-21 gitlab 2021-06-11
Arch Linux ASA-202106-20 inetutils 2021-06-11
Arch Linux ASA-202106-27 isync 2021-06-11
Arch Linux ASA-202106-29 kube-apiserver 2021-06-11
Arch Linux ASA-202106-28 nettle 2021-06-11
Arch Linux ASA-202106-24 polkit 2021-06-11
Arch Linux ASA-202106-25 python-urllib3 2021-06-11
Arch Linux ASA-202106-26 python-websockets 2021-06-11
Arch Linux ASA-202106-22 thunderbird 2021-06-11
Arch Linux ASA-202106-30 wireshark-cli 2021-06-11
CentOS CESA-2021:2323 C7 389-ds-base 2021-06-14
CentOS CESA-2021:2357 C7 dhcp 2021-06-14
CentOS CESA-2021:2206 C7 firefox 2021-06-14
CentOS CESA-2021:2147 C7 glib2 2021-06-14
CentOS CESA-2021:2318 C7 hivex 2021-06-14
CentOS CESA-2021:2314 C7 kernel 2021-06-14
CentOS CESA-2021:1512 C7 postgresql 2021-06-14
CentOS CESA-2021:2322 C7 qemu-kvm 2021-06-14
CentOS CESA-2021:2328 C7 qt5-qtimageformats 2021-06-14
CentOS CESA-2021:2313 C7 samba 2021-06-14
CentOS CESA-2021:2033 C7 xorg-x11-server 2021-06-14
Debian DSA-4928-1 stable htmldoc 2021-06-09
Debian DLA-2684-1 LTS lasso 2021-06-10
Debian DSA-4930-1 stable libwebp 2021-06-10
Debian DLA-2687-1 LTS prosody 2021-06-16
Debian DLA-2686-1 LTS python-urllib3 2021-06-16
Debian DSA-4929-1 stable rails 2021-06-09
Debian DLA-2685-1 LTS squid3 2021-06-14
Debian DSA-4931-1 stable xen 2021-06-15
Fedora FEDORA-2021-3cf08ffe38 F33 dino 2021-06-16
Fedora FEDORA-2021-e9c84e6d26 F33 dotnet3.1 2021-06-16
Fedora FEDORA-2021-cb4f3ab817 F34 dotnet3.1 2021-06-16
Fedora FEDORA-2021-4b3fc547fe F33 dotnet5.0 2021-06-16
Fedora FEDORA-2021-1e0e04958d F34 dotnet5.0 2021-06-16
Fedora FEDORA-2021-8917c5d9d2 F33 exiv2 2021-06-10
Fedora FEDORA-2021-7b03865dbc F33 firefox 2021-06-11
Fedora FEDORA-2021-af55f610eb F34 firefox 2021-06-10
Fedora FEDORA-2021-7ddb8b0537 F34 glibc 2021-06-14
Fedora FEDORA-2021-db2bb87f35 F33 kernel 2021-06-15
Fedora FEDORA-2021-bc2a819bc5 F34 kernel 2021-06-15
Fedora FEDORA-2021-db2bb87f35 F33 kernel-tools 2021-06-15
Fedora FEDORA-2021-bc2a819bc5 F34 kernel-tools 2021-06-15
Fedora FEDORA-2021-508acb1153 F33 lasso 2021-06-11
Fedora FEDORA-2021-bb3ea1e191 F34 lasso 2021-06-11
Fedora FEDORA-2021-b950000d2b F33 libxml2 2021-06-14
Fedora FEDORA-2021-8a10199ab5 F34 microcode_ctl 2021-06-10
Fedora FEDORA-2021-e145f477df F33 mingw-openjpeg2 2021-06-12
Fedora FEDORA-2021-c1ac2ee5ee F34 mingw-openjpeg2 2021-06-12
Fedora FEDORA-2021-cc85f79f63 F33 mod_auth_openidc 2021-06-11
Fedora FEDORA-2021-46b017b771 F34 mod_auth_openidc 2021-06-11
Fedora FEDORA-2021-b37cffac0d F33 nginx 2021-06-11
Fedora FEDORA-2021-393d698493 F34 nginx 2021-06-11
Fedora FEDORA-2021-e145f477df F33 openjpeg2 2021-06-12
Fedora FEDORA-2021-c1ac2ee5ee F34 openjpeg2 2021-06-12
Fedora FEDORA-2021-0ad4bec5b1 F33 redis 2021-06-11
Fedora FEDORA-2021-916f861096 F34 redis 2021-06-11
Fedora FEDORA-2021-c0bec55ec7 F34 squid 2021-06-11
Fedora FEDORA-2021-1c3f7963a5 F34 vmaf 2021-06-16
Mageia MGASA-2021-0247 7, 8 djvulibre 2021-06-13
Mageia MGASA-2021-0248 7, 8 docker-containerd 2021-06-13
Mageia MGASA-2021-0252 7, 8 exif 2021-06-13
Mageia MGASA-2021-0250 7, 8 gnuchess 2021-06-13
Mageia MGASA-2021-0255 7, 8 irssi 2021-06-13
Mageia MGASA-2021-0249 7, 8 jasper 2021-06-13
Mageia MGASA-2021-0257 7, 8 kernel 2021-06-13
Mageia MGASA-2021-0258 7, 8 kernel-linus 2021-06-13
Mageia MGASA-2021-0256 7, 8 microcode 2021-06-13
Mageia MGASA-2021-0246 7, 8 python-lxml 2021-06-13
Mageia MGASA-2021-0245 7 python-pygments 2021-06-13
Mageia MGASA-2021-0251 8 rust 2021-06-13
Mageia MGASA-2021-0253 8 slurm 2021-06-13
Mageia MGASA-2021-0254 7, 8 wpa_supplicant, hostapd 2021-06-13
openSUSE openSUSE-SU-2021:0868-1 15.2 389-ds 2021-06-11
openSUSE openSUSE-SU-2021:0870-1 15.2 pam_radius 2021-06-12
openSUSE openSUSE-SU-2021:0861-1 15.2 python-HyperKitty 2021-06-09
Oracle ELSA-2021-2353 OL8 .NET 5.0 2021-06-10
Oracle ELSA-2021-2352 OL8 .NET Core 3.1 2021-06-12
Oracle ELSA-2021-2323 OL7 389-ds-base 2021-06-09
Oracle ELSA-2021-2323 OL7 389-ds-base 2021-06-09
Oracle ELSA-2021-2291 OL8 container-tools:2.0 2021-06-10
Oracle ELSA-2021-2370 OL8 container-tools:3.0 2021-06-14
Oracle ELSA-2021-2371 OL8 container-tools:ol8 2021-06-14
Oracle ELSA-2021-2357 OL7 dhcp 2021-06-10
Oracle ELSA-2021-2357 OL7 dhcp 2021-06-10
Oracle ELSA-2021-2359 OL8 dhcp 2021-06-10
Oracle ELSA-2021-2417 OL7 gupnp 2021-06-15
Oracle ELSA-2021-2417 OL7 gupnp 2021-06-15
Oracle ELSA-2021-2363 OL8 gupnp 2021-06-10
Oracle ELSA-2021-2318 OL7 hivex 2021-06-10
Oracle ELSA-2021-2318 OL7 hivex 2021-06-10
Oracle ELSA-2021-2314 OL7 kernel 2021-06-10
Oracle ELSA-2021-9305 OL7 kernel 2021-06-14
Oracle ELSA-2021-9305 OL7 kernel 2021-06-14
Oracle ELSA-2021-9306 OL7 kernel 2021-06-15
Oracle ELSA-2021-9306 OL8 kernel 2021-06-15
Oracle ELSA-2021-9306 OL8 kernel 2021-06-15
Oracle ELSA-2021-9307 OL7 kernel-container 2021-06-15
Oracle ELSA-2021-9307 OL8 kernel-container 2021-06-15
Oracle ELSA-2021-9294 OL7 krb5 2021-06-10
Oracle ELSA-2021-9294 OL7 krb5 2021-06-11
Oracle ELSA-2021-2354 OL8 libwebp 2021-06-10
Oracle ELSA-2021-2305 OL7 microcode_ctl 2021-06-11
Oracle ELSA-2021-2290 OL8 nginx:1.16 2021-06-10
Oracle ELSA-2021-2397 OL7 postgresql 2021-06-14
Oracle ELSA-2021-2397 OL7 postgresql 2021-06-14
Oracle ELSA-2021-2361 OL8 postgresql:10 2021-06-10
Oracle ELSA-2021-2372 OL8 postgresql:12 2021-06-12
Oracle ELSA-2021-2375 OL8 postgresql:13 2021-06-12
Oracle ELSA-2021-2360 OL8 postgresql:9.6 2021-06-10
Oracle ELSA-2021-2322 OL7 qemu-kvm 2021-06-09
Oracle ELSA-2021-2328 OL7 qt5-qtimageformats 2021-06-09
Oracle ELSA-2021-2328 OL7 qt5-qtimageformats 2021-06-09
Oracle ELSA-2021-9298 OL7 runc 2021-06-11
Oracle ELSA-2021-2313 OL7 samba 2021-06-09
Oracle ELSA-2021-2313 OL7 samba 2021-06-09
Red Hat RHSA-2021:2370-01 EL8 container-tools:3.0 2021-06-10
Red Hat RHSA-2021:2371-01 EL8 container-tools:rhel8 2021-06-10
Red Hat RHSA-2021:2419-01 EL6 dhcp 2021-06-14
Red Hat RHSA-2021:2418-01 EL7.2 dhcp 2021-06-14
Red Hat RHSA-2021:2415-01 EL7.3 dhcp 2021-06-14
Red Hat RHSA-2021:2414-01 EL7.4 dhcp 2021-06-14
Red Hat RHSA-2021:2405-01 EL7.7 dhcp 2021-06-14
Red Hat RHSA-2021:2416-01 EL8.1 dhcp 2021-06-14
Red Hat RHSA-2021:2420-01 EL8.2 dhcp 2021-06-14
Red Hat RHSA-2021:2417-01 EL7 gupnp 2021-06-14
Red Hat RHSA-2021:2459-01 EL8.1 gupnp 2021-06-16
Red Hat RHSA-2021:2422-01 EL8.2 gupnp 2021-06-14
Red Hat RHSA-2021:2397-01 EL7 postgresql 2021-06-14
Red Hat RHSA-2021:2392-01 EL8.1 postgresql:10 2021-06-14
Red Hat RHSA-2021:2390-01 EL8.2 postgresql:10 2021-06-14
Red Hat RHSA-2021:2372-01 EL8 postgresql:12 2021-06-10
Red Hat RHSA-2021:2389-01 EL8.2 postgresql:12 2021-06-14
Red Hat RHSA-2021:2375-01 EL8 postgresql:13 2021-06-10
Red Hat RHSA-2021:2393-01 EL8.1 postgresql:9.6 2021-06-14
Red Hat RHSA-2021:2391-01 EL8.2 postgresql:9.6 2021-06-14
Red Hat RHSA-2021:2395-01 SCL rh-postgresql10-postgresql 2021-06-14
Red Hat RHSA-2021:2394-01 SCL rh-postgresql12-postgresql 2021-06-14
Red Hat RHSA-2021:2396-01 SCL rh-postgresql13-postgresql 2021-06-14
Scientific Linux SLSA-2021:2323-1 SL7 389-ds-base 2021-06-09
Scientific Linux SLSA-2021:2357-1 SL7 dhcp 2021-06-14
Scientific Linux SLSA-2021:2417-1 SL7 gupnp 2021-06-15
Scientific Linux SLSA-2021:2318-1 SL7 hivex 2021-06-09
Scientific Linux SLSA-2021:2314-1 SL7 kernel 2021-06-15
Scientific Linux SLSA-2021:2260-1 SL7 libwebp 2021-06-09
Scientific Linux SLSA-2021:2305-1 SL7 microcode_ctl 2021-06-14
Scientific Linux SLSA-2021:2397-1 SL7 postgresql 2021-06-14
Scientific Linux SLSA-2021:2322-1 SL7 qemu-kvm 2021-06-09
Scientific Linux SLSA-2021:2328-1 SL7 qt5-qtimageformats 2021-06-09
Scientific Linux SLSA-2021:2313-1 SL7 samba 2021-06-09
Scientific Linux SLSA-2021:2263-1 SL7 thunderbird 2021-06-09
SUSE SUSE-SU-2021:1962-1 OS9 ardana-neutron, ardana-swift, cassandra, crowbar-openstack, grafana, kibana, openstack-dashboard, openstack-ironic, openstack-neutron, openstack-neutron-gbp, openstack-nova, python-Django1, python-py, python-pysaml2, python-xmlschema, rubygem-activerecord-session_store, venv-openstack-keystone 2021-06-11
SUSE SUSE-SU-2021:1943-1 OS8 OS9 SLE12 caribou 2021-06-10
SUSE SUSE-SU-2021:1954-1 MP4.0 SLE15 SES6 SES7 containerd, docker, runc 2021-06-11
SUSE SUSE-SU-2021:1963-1 OS7 crowbar-openstack, grafana, kibana, monasca-installer, python-Django, python-py, rubygem-activerecord-session_store 2021-06-11
SUSE SUSE-SU-2021:1952-1 SLE12 csync2 2021-06-10
SUSE SUSE-SU-2021:1948-1 SLE15 djvulibre 2021-06-10
SUSE SUSE-SU-2021:1919-1 MP4.0 SLE15 SES6 firefox 2021-06-09
SUSE SUSE-SU-2021:1960-1 OS8 OS9 SLE12 freeradius-server 2021-06-11
SUSE SUSE-SU-2021:1959-1 SLE12 freeradius-server 2021-06-11
SUSE SUSE-SU-2021:1944-1 SLE15 gstreamer-plugins-bad 2021-06-10
SUSE SUSE-SU-2021:1980-1 OS8 OS9 SLE12 java-1_8_0-openjdk 2021-06-15
SUSE SUSE-SU-2021:1912-1 MP4.0 SLE15 SES6 kernel 2021-06-09
SUSE SUSE-SU-2021:1913-1 SLE12 kernel 2021-06-09
SUSE SUSE-SU-2021:1915-1 SLE15 kernel 2021-06-09
SUSE SUSE-SU-2021:1977-1 SLE15 kernel 2021-06-15
SUSE SUSE-SU-2021:1975-1 SLE15 kernel 2021-06-15
SUSE SUSE-SU-2021:1957-1 SLE12 libjpeg-turbo 2021-06-11
SUSE SUSE-SU-2021:1958-1 SLE15 libjpeg-turbo 2021-06-11
SUSE SUSE-SU-2021:1914-1 SLE15 libopenmpt 2021-06-09
SUSE SUSE-SU-2021:1917-1 SLE15 libxml2 2021-06-09
SUSE SUSE-SU-2021:1970-1 SLE15 postgresql10 2021-06-14
SUSE SUSE-SU-2021:1940-1 OS7 python-Pillow 2021-06-10
SUSE SUSE-SU-2021:1939-1 OS8 python-Pillow 2021-06-10
SUSE SUSE-SU-2021:1938-1 OS9 python-Pillow 2021-06-10
SUSE SUSE-SU-2021:1918-1 MP4.0 SLE15 SES6 qemu 2021-06-09
SUSE SUSE-SU-2021:1947-1 OS9 SLE12 qemu 2021-06-10
SUSE SUSE-SU-2021:1942-1 SLE15 qemu 2021-06-10
SUSE SUSE-SU-2021:1951-1 SLE15 salt 2021-06-10
SUSE SUSE-SU-2021:1978-1 SMS4 snakeyaml 2021-06-15
SUSE SUSE-SU-2021:1979-1 SMS4.1 snakeyaml 2021-06-15
SUSE SUSE-SU-2021:1956-1 MP4.0 SLE15 SES6 spice 2021-06-11
SUSE SUSE-SU-2021:1927-1 SLE15 spice 2021-06-10
SUSE SUSE-SU-2021:1928-1 MP4.0 SLE15 SES6 spice-gtk 2021-06-10
SUSE SUSE-SU-2021:1961-1 MP4.0 SLE15 SES6 squid 2021-06-11
SUSE SUSE-SU-2021:1932-1 MP4.0 SLE15 SES6 ucode-intel 2021-06-10
SUSE SUSE-SU-2021:1930-1 OS8 OS9 SLE12 ucode-intel 2021-06-10
SUSE SUSE-SU-2021:1929-1 SLE12 ucode-intel 2021-06-10
SUSE SUSE-SU-2021:1931-1 SLE15 ucode-intel 2021-06-10
SUSE SUSE-SU-2021:1933-1 SLE15 ucode-intel 2021-06-10
SUSE SUSE-SU-2021:14748-1 SLE11 xorg-x11-libX11 2021-06-15
SUSE SUSE-SU-2021:14747-1 SLE11 xterm 2021-06-14
Ubuntu USN-4989-2 16.04 bluez 2021-06-16
Ubuntu USN-4989-1 18.04 20.04 20.10 21.04 bluez 2021-06-16
Ubuntu USN-4988-1 18.04 20.04 20.10 imagemagick 2021-06-15
Ubuntu USN-4987-1 18.04 20.04 20.10 21.04 libimage-exiftool-perl 2021-06-10
Ubuntu USN-4971-2 14.04 16.04 libwebp 2021-06-10
Ubuntu USN-4986-2 14.04 16.04 rpcbind 2021-06-09
Ubuntu USN-4986-4 14.04 16.04 rpcbind 2021-06-10
Ubuntu USN-4986-3 18.04 rpcbind 2021-06-10
Full Story (comments: none)

Kernel patches of interest

Kernel releases

Linus Torvalds Linux 5.13-rc6 Jun 13
Greg Kroah-Hartman Linux 5.12.11 Jun 16
Greg Kroah-Hartman Linux 5.12.10 Jun 10
Greg Kroah-Hartman Linux 5.10.44 Jun 16
Greg Kroah-Hartman Linux 5.10.43 Jun 10
Greg Kroah-Hartman Linux 5.4.126 Jun 16
Greg Kroah-Hartman Linux 5.4.125 Jun 10
Greg Kroah-Hartman Linux 4.19.195 Jun 16
Greg Kroah-Hartman Linux 4.19.194 Jun 10
Greg Kroah-Hartman Linux 4.14.237 Jun 16
Greg Kroah-Hartman Linux 4.14.236 Jun 10
Greg Kroah-Hartman Linux 4.9.273 Jun 16
Greg Kroah-Hartman Linux 4.9.272 Jun 10
Greg Kroah-Hartman Linux 4.4.273 Jun 16
Greg Kroah-Hartman Linux 4.4.272 Jun 10

Architecture-specific

Pavel Tatashin arm64: MMU enabled kexec relocation Jun 08
Anup Patel RISC-V CPU Idle Support Jun 09
Anup Patel RISC-V ACLINT Support Jun 12
Matteo Croce riscv: optimized mem* functions Jun 15
Kuppuswamy Sathyanarayanan Add TDX Guest Support (#VE handler support) Jun 09
Kuppuswamy Sathyanarayanan Add TDX Guest Support (shared-mm support) Jun 09

Build system

Core kernel

Matthew Bobrowski Add pidfd support to the fanotify API Jun 10
Alexei Starovoitov bpf: Introduce BPF timers. Jun 10
Mark Rutland irq: detect slow IRQ handlers Jun 15
John Ogness introduce printk cpu lock Jun 15

Development tools

Daniel Bristot de Oliveira hwlat improvements and osnoise/timerlat tracers Jun 15

Device drivers

Miquel Raynal ARM Primecell PL35x support Jun 09
Jiri Prchal add support for FRAM Jun 11
Jens Wiklander tee: shared memory updates Jun 09
周琰杰 (Zhou Yanjie) Add Ingenic SoCs MAC support. Jun 10
Matthias Kaehlcke USB: misc: Add onboard_usb_hub driver Jun 09
Viresh Kumar gpio: Add virtio based driver Jun 10
Ioana Ciornei ACPI support for dpaa2 driver Jun 10
Martin Kepplinger Add support for the Hynix Hi-846 camera Jun 11
Cristian Marussi Introduce SCMI VirtIO transport Jun 11
Romain Perier Add watchdog for Mstar SoCs Jun 11
Srinivas Kandagatla ASoC: codecs: add wcd938x support Jun 09
Chaitanya Kulkarni nvmet: add ZBD backened support Jun 09
Vladimir Oltean DSA tagging driver for NXP SJA1110 Jun 11
Mikko Perttunen TegraDRM UAPI Jun 10
Jean-Philippe Brucker Add support for ACPI VIOT Jun 10
Sander Vanheule RTL8231 GPIO expander support Jun 12
alexandru.tachici@analog.com clk: ad9545: Add support Jun 14
Martin Kepplinger media: imx: add support for imx8mq MIPI RX Jun 14
Steen Hegelund Adding the Sparx5 Switch Driver Jun 15
Stephan Gerhold net: wwan: Add RPMSG WWAN CTRL driver Jun 15
Alistair Francis Add Wacom I2C support to rM2 Jun 15
Avri Altman Add Host control mode to HPB Jun 16
Yong Wu MT8195 SMI support Jun 16
Chun-Jie Chen Mediatek MT8195 power domain support Jun 15
Xin Ji Add MIPI rx DPI support Jun 16
Robert Foss Qcom SM8350 DispCC & VideoCC Jun 16
Emil Renner Berthing hwmon: Add StarFive JH7100 temperature sensor Jun 16

Device-driver infrastructure

Filesystems and block layer

Memory management

Matthew Wilcox (Oracle) Memory folios Jun 14

Networking

Security-related

Casey Schaufler LSM: Module stacking for AppArmor Jun 10

Virtualization and containers

Steven Price MTE support for KVM guest Jun 14

Miscellaneous

Steve Dickson ANNOUNCE: nfs-utils-2.5.4 released. Jun 14
Eric Biggers fsverity-utils v1.4 Jun 14

Page editor: Rebecca Sobol


Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds