LWN.net Weekly Edition for March 22, 2018
Welcome to the LWN.net Weekly Edition for March 22, 2018
This edition contains the following feature content:
- A "runtime guard" for the kernel: a look at the LKRG security-oriented module.
- Super long-term kernel support: some use cases call for kernels that are supported for 20 years or more; this project is trying to make that support happen.
- Two perspectives on the maintainer relationship: a pair of ELC talks on how the kernel's maintainer process works.
- The Sound Open Firmware project launches: a new project to provide open-source firmware for audio devices.
- The strange story of the ARM Meltdown-fix backport: should the 4.9-stable kernel get backported Meltdown patches, and what testing should be required before they are accepted?
- Porting Fedora to RISC-V: a report on the community effort to run Fedora on the RISC-V processor.
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.
A "runtime guard" for the kernel
While updating kernels frequently is generally considered a security best practice, there are many installations that are unable to do so for a variety of reasons. That means running with some number of known vulnerabilities (along with an unknown number of unknown vulnerabilities, of course), so some way to detect and stop exploits for those flaws may be desired. That is exactly what the Linux Kernel Runtime Guard (LKRG) is meant to do.
LKRG comes out of the Openwall
project that is perhaps best known for its security-enhanced Linux
distribution. Alexander Peslyak, or "Solar Designer", who is Openwall's
founder and leader is prominent in
security circles as well. He announced
LKRG at the end of January as "our most controversial project
ever
". The 0.0 release that was announced was "quite
sloppy
", Peslyak said in a LKRG 0.1 release
announcement on February 9; principal developer Adam "pi3"
Zabrocki cleaned things up
and added some new features based on ten days of feedback.
At its core, LKRG is a loadable kernel module that tries to detect changes to the running kernel that would indicate that some kind of exploit is being used against it. Beyond that, it checks processes running on the system to look for unauthorized modifications to credentials of various sorts in order to prevent those changes from granting additional access—something that exploits will try to do. The initial LKRG announcement describes the goals this way:
As noted, LKRG can be bypassed, so it is really only another line of defense in a defense-in-depth strategy, rather than a panacea of any sort. In addition, it currently is in an experimental stage (as the version numbers might indicate), so it only logs any kernel modifications that it finds. The kernel is replete with various types of self-modifying code, from tracepoints and other debugging features to optimizations of various sorts, so protecting the integrity of the running kernel is not a straightforward task.
To track the running kernel, LKRG creates a database of hashes of various types of information about the system and the kernel running on it. It tracks the CPUs available and active in the system, along with the location and contents of their interrupt descriptor tables (IDTs) and model-specific registers (MSRs). Since the kernel may modify itself due to changes in the number of CPUs hotplugged into (or unplugged from) the system, LKRG must be ready to recalculate some of its hashes based on those events.
For the kernel, LKRG tracks the hashes of the .text section, the .rodata section (which should never change), and the exception table. Beyond that, each loaded module is tracked, including information like its struct module pointer, name, size and hash of its .text section, and some other module-specific information. The details of that are described on the LKRG wiki.
In order to detect modifications, the values stored need to be validated regularly. This is done via a number of mechanisms, starting with a timer that checks at regular intervals; the period can be set via the sysctl interface. It also runs the check whenever module-loading or CPU-hotplug activity is detected and can be triggered manually by way of another sysctl. Other events in the system (e.g. CPU idle, network activity, USB change, etc.) will trigger the validation, though only a certain percentage of the time to reduce the performance impact. For example, CPU idle will trigger validation 0.005% of the time while a USB change will do so 50% of time.
All of that is meant to protect the integrity of the running kernel itself, but exploits often target the processes running on the system in order to elevate privileges and the like; that information lives in the kernel's read-write memory. So LKRG also tracks a whole bunch of different attributes of each process and maintains its own task list that can be used to validate the kernel's list. If the two diverge, affected processes are killed; the intent is to do so before they can take advantage of the differences.
The tracking consists of task attributes like the address of the task_struct, process name and ID, the addresses of the cred and real_cred credential structures, the various user and group IDs associated with it, SELinux settings, and "secure computing" (seccomp) settings and configuration. Various other things are tracked currently (e.g. capabilities information) but not validated.
All of that information is validated every time certain system calls (e.g. setuid(), execve()) or other events happen in the system (e.g. when permissions are checked prior to opening a file). In addition, the process-list validation is done every time the kernel validation is run. All processes are validated each time, not just the one making the system call, and any discrepancy results in killing any process that has differences.
The wiki page shows tests of LKRG to detect exploits of some known kernel
vulnerabilities (e.g. CVE-2014-9322, CVE-2017-6074);
both of those were detected, as were a few others. The performance impact
has been
measured in a rudimentary way: a system running LKRG 0.0 was about 6.5%
slower building
Openwall's John the Ripper password cracker.
Performance optimizations have not been a focus yet, but: "We find
this performance impact significant (especially for a security measure
bypassable by design), and are likely to make adjustments to reduce
it.
"
There are certain kinds of kernel vulnerabilities that LKRG cannot detect. If the exploit functions entirely in user space (perhaps by exploiting a kernel race condition like Dirty COW), it won't modify the parts of the kernel that are being tracked, thus won't trigger LKRG. The home page describes it this way:
LKRG is available for x86 and x86-64 and, because it is a kernel module rather than a set of patches, it will build for a wide variety of kernel versions. It can be built for the RHEL 7 kernel, which is based on 3.10, and it will also build for the mainline (4.15). The project has a mailing list for questions and support, though it is rather quiet; there are only a few postings from January and February at this point.
It is clearly a niche project and one that may not really find many users. For some installations, it could provide another level of defense, but it means those users are probably not keeping up with their kernel updates. Given that LKRG can be bypassed and that it certainly can't detect all kinds of kernel exploits, it may provide a false sense of security. But for organizations that carefully consider the threat model for LKRG and their own needs, there is value to be found in LKRG. Whether there is enough value to sustain a project (and perhaps allow Openwall to provide a non-free "LKRG Pro" version) remains to be seen.
Super long-term kernel support
Some years ago, prominent community leaders doubted that even short-term stable maintenance of kernel releases was feasible. More recently, selecting an occasional kernel for a two-year maintenance cycle has become routine, and some kernels, such as 3.2 under the care of Ben Hutchings, have received constant maintenance for as much as six years. But even that sort of extended maintenance is not enough for some use cases, as Yoshitake Kobayashi explained in his Embedded Linux Conference talk. To meet those needs, the Civil Infrastructure Platform (CIP) project is setting out to maintain releases for a minimum of 20 years.CIP, he said, is one of the most conservative projects out there, but also one of the most important. It is working to create a stable base layer for civil infrastructure systems. It is not trying to create a new distribution. Civilization runs on Linux. Infrastructure we all count on, including that dealing with transportation, power generation, and more, is Linux based. If those systems fail, we will have serious problems. But this kind of infrastructure runs on a different time scale than a typical Linux distribution. The development time required just to place such a system in service can approach two decades, and the system itself can then stay in service for 25-60 years.
The computing systems that support this infrastructure must thus continue
to work for a long time. It must be based on "industrial-grade" software
that is able to provide the required level of reliability, robustness, and
security. But the systems supporting civil infrastructure also must be
brought up to current technology levels.
Until now, the long-term support needed to keep them running has been done
by individual companies, with little in the way of shared effort. That has
kept these systems functional, but it is an expensive approach that tends
to lag behind the current state of the technology.
The way to do a better job, Kobayashi said, is to put together a collaborative framework that supports industrial-grade software while working with the upstream development communities as much as possible. That is the role that the CIP was created to fill. There are currently seven member companies supporting CIP, with Moxa being the latest addition. They are supporting the project by contributing directly to upstream projects and funding work that advances CIP's objectives.
CIP is currently focused on the creation of an open-source base layer consisting of a small number of components, including the kernel, the GNU C library, and BusyBox. Distributors will be able to build on this base as is needed, but CIP itself is starting small. The primary project at the moment is the creation of the super-long-term support (SLTS) kernel which, it is hoped, can be supported for at least ten years; as experience with extra long-term support grows, future kernels will have longer periods of support. The first SLTS kernel will be based on the 4.4 LTS release and will be maintained by Ben Hutchings; the 4.4.120-cip20 release came out on March 9.
For the most part, the CIP SLTS kernel will be based on vanilla 4.4, but there are some additions being made. The latest Meltdown and Spectre fixes are being backported to this kernel for example, as are some of the hardening patches from the Kernel Self-Protection Project. Support for some Siemens industrial-control boards is being added. Perhaps the most interesting enhancement, however, is the realtime preemption patch set, which is of interest for a number of the use cases targeted by the CIP project. CIP has joined the realtime preemption project as a member and is planning to take over the maintenance of the 4.4-rt kernel. The first SLTS kernel with realtime support was released in January.
In general, the project's policy will be to follow the upstream stable releases for as long as they are supported. Backports from newer kernels are explicitly allowed, but they must be in the mainline before being considered for addition to an SLTS kernel. New kernel versions will be released every four-to-six weeks. There is an explicit policy of non-support for out-of-tree drivers; distributors and users can add them, of course, but any bugs must be demonstrated in a pristine SLTS kernel before the CIP project will act on them.
A new major kernel release will be chosen for super-long-term support every two or three years. The project is currently thinking about which release will be the base for the next SLTS kernel; for obvious reasons, alignment with upstream LTS choices is important. There will be a meeting at the Japan Open Source Summit to make this decision.
There is some initial work on testing infrastructure based on the "board at desk" model; the testing framework is based on the kernelci.org infrastructure. Future work includes collaboration with other testing efforts, more frequent test coverage, and support for container deployment on SLTS-based systems. Debian has been chosen as the primary reference distribution for CIP systems, and all of the CIP core packages have been taken from Debian. As part of this effort, CIP is supporting the Debian-LTS effort at the platinum level.
The CIP core effort is working on the creation of installable images consisting of a small subset of Debian packages and the CIP SLTS kernel. This work can be found on GitLab. CIP is working with Debian to provide longer-term support of a subset of packages, to improve cross-compilation support, and to improve the sharing of DEP-5 license information.
In the longer-term, CIP is looking toward IEC-62443 security certification. That is an ambitious goal and CIP can't get there by itself, but the project is working on documentation, test cases, and tools that will hopefully help with an eventual certification effort. Another issue that must be on the radar of any project like this is the year-2038 problem, which currently puts a hard limit on how long a Linux system can be supported. CIP is working with kernel and libc developers to push solutions forward in this area.
Someday CIP hopes to work more on functional safety issues and to come up with better solutions for long-term software updates. The project has just joined the EdgeX Foundry to explore what common ground may be found with that group. Clearly, the CIP project has a lot of issues on its plate; it seems likely that we will be hearing about this project for a long time.
[Thanks to the Linux Foundation, LWN's travel sponsor, for supporting your editor's travel to ELC.]
Two perspectives on the maintainer relationship
Developers and maintainers of free-software projects are drawn from the same pool of people, and maintainers in one project are often developers in another, but there is still a certain amount of friction between the two groups. Maintainers depend on developers to contribute changes, but the two groups have a different set of incentives when it comes to reviewing and accepting those changes. Two talks at the 2018 Embedded Linux Conference shed some light on this relationship and how it can be made to work more smoothly.
A developer's view
Gilad Ben-Yossef is the developer of the TrustZone CryptoCell device driver, which is slated to move into the mainline in the 4.17 cycle after a period in the staging tree. Staging, he said, is a place for code that is "on probation", waiting to see if it can be brought up to the kernel's standards for mainline code. Getting the CryptoCell driver out of staging was a sometimes difficult and frustrating process but, at the end, he came to a surprising realization: during that process, 30% of the code had been removed from the driver with no loss in functionality. This was a good thing and a nice benefit from the kernel's code-review processes, but it was also discouraging in that 30% of the code he started with was worthless — or worse.
So where did all of this extra code come from? He identified seven
different types of useless code, the first of which was described as
"reinventing the wheel". Much of the code in the driver was reimplementing
functionality that was already available elsewhere in the kernel. When
looking at code, he said, developers should always be asking themselves
whether the problem being solved is truly unique to the subsystem in
question. If not, it's time to look at what other subsystems do; sometimes
a useful API will be found in the process. At other times, of course, it
falls on the developer to create that API.
Much of the code in the CryptoCell driver was there for backward compatibility, using what he called a "back to the future" approach where a lot of #ifdef blocks were employed to isolate kernel-version-specific code. The better approach, he found, was to simply base the driver on the current mainline kernel and to have that driver support all versions of the device in question. That driver can then be backported to older kernel versions if necessary, with help from the tools at backports.wiki.kernel.org. The process is mostly automated and nearly painless, and it allows a lot of code to be removed from the upstream driver.
Another source of code bloat is the use of the wrong API. The CryptoCell driver was using sysfs to export what was essentially debugging information, for example. Switching to debugfs accomplished the same thing with ¼ of the code.
The next problem was "duct tape". The crypto layer supports both synchronous and asynchronous APIs, and drivers can implement one or both of those interfaces. The CryptoCell driver supported the asychronous API, which is a better fit to the hardware, but some of the more important users (such as the dm-verity target) expected the synchronous API. Supporting both in CryptoCell led to an "ugly and unstable" solution. The better solution was to convert dm-verity to the asynchronous API. The lesson here is to fix problems at their source rather than working around them in driver code.
The driver included a fair amount of "macro gymnastics" that were mostly the result of trying to implement a hardware abstraction layer. These layers have a bad reputation in the kernel community; they tend to lead to poor performance and driver code that is harder to maintain. The solution was to simply rip all of that stuff out. Whenever you see a lot of wrappers, he said, you should be asking whether they make sense.
"Zombie code" is surprisingly prevalent, despite the normal expectations that a maintained driver wouldn't have much unused code. Some of the code that was found had never been used. This code should always come out; removed code cannot be used against you, he said. This is especially important given the Spectre vulnerability, where even code that is never called can be made to execute speculatively.
Finally, "don't repeat yourself" is "programming 101", but unneeded repetition of code tends to happen anyway. Copy-and-paste is a way of life. Such code should be pulled together and generalized as needed; the result will be a much shorter driver.
While Ben-Yossef talked mostly about the ways in which he was able to reduce the size of the driver, the key point from the talk was something else. Taking out all of that code improved the quality of the driver considerably, and all of those benefits were a direct result of the process of upstreaming the driver into the mainline kernel. Upstreaming is not just the right thing to do; it has a huge positive effect on the quality of the code itself. It is a way to get the attention of a community of experts, all of whom are working to improve the quality of the kernel altogether. While the process was frustrating at times, it was all worthwhile in the end.
The maintainer's paradox
Tim Bird has been a member of the embedded Linux community for a long time, but he had not worked in a maintainer role until he took over responsibility for the Fuego project. That gave him a different perspective on how the community works that he shared in a keynote presentation.
As a maintainer, he is excited to see new contributions to the project show
up on the mailing lists. He appreciates new ideas and new contributors.
But he also approaches new contributions with a bit of fear and
trepidation; a new patch set can create an instinctive "oh no" response.
The problem is mostly a matter of finding the time to do a proper job of
looking at each contribution. He wants to do it well, providing careful
review and appropriate feedback, but doing that turns out to be a lot of
work. He had set a goal for himself to respond to all patches within
24 hours; while that was a great goal, it was also totally
unrealistic.
The experience of being a maintainer, he said, can be overwhelming; his experience has caused him to rethink the times that he has gotten annoyed with maintainers in the past. A patch contribution is a bit like getting a puppy; we all want one, but don't always think about how much work is involved.
The community, he said, likes to think that its decisions are based entirely on merit. In truth, there is also an important social element involved in working in the development community. Despite our efforts to just review code and judge it on its own merits, there are personalities involved. As a result, we see snippy answers and negative things happening in our communication channels. He referred to Daniel Vetter's recent talk as a description of how things can go wrong, while noting that he didn't agree with everything that was said there.
There are a few things we can do to help reduce the amount of negativity in our community, he said. We should call out negative communication when we see it. That is sometimes best done in private, but it can sometimes be necessary to do it publicly when things get especially bad. In the presence of continued problems, the best thing is often to route around persistent offenders. That is relatively easy to do in subsystems that have group maintainership, a model which not only gives contributors multiple paths to acceptance but also relieves the stress on the maintainers themselves.
Maintainers and developers should always listen carefully and make active efforts to clarify the message they are receiving. Many problems have simple miscommunication at their root, he said. Any developer can assist maintainers by answering questions when they are asked and helping other developers in general. And, finally, developers should become maintainers as well, so that they, too, can "enjoy this overwhelming feeling".
Bird closed with a plea to everybody in the room: find something to do in the community. There are roles for everybody out there, and there is no shortage of work to be done. In his 25 years of experience, he has never found anything quite like the kernel community. It is a place where anybody can contribute and create value for humanity as a whole.
[Thanks to the Linux Foundation, LWN's travel sponsor, for supporting your editor's travel to ELC.]
The Sound Open Firmware project launches
It is an increasingly poorly kept secret that, underneath the hood of the components that most of us view as "hardware", there is a great deal of proprietary software. This code, written by anonymous developers, rarely sees the light of day; as a result, it tends to have all of the pathologies associated with software that nobody can either review or fix. The 2018 Embedded Linux Conference saw an announcement for a new project that, with luck, will change that situation, at least for one variety of hardware: audio devices.
Intel's Imad Sousou took to the stage at ELC to introduce a couple of new
projects. One of them was inspired by the MinnowBoard project, which is working
to create development boards based entirely on free software. That goal
has been almost completely achieved, he said, but there is an exception in
that the board requires a number of proprietary firmware components. The
desire to fix that problem led to the creation of the Sound Open Firmware (SOF) project.
The objective behind SOF is to create open-source firmware for audio and video-related devices. This is, Sousou said, an area that has typically been dominated by proprietary software. This project has been jointly launched with Google; there are, he suggested, plenty of opportunities for contributors who might want to join this effort. The code is released under a combination of the BSD and GPLv2 licenses.
Sousou's talk stopped there, but a bit of digging can turn up some more
information. The project has a
page on the ALSA project's wiki describing where to find the software
and how to get started with it. There is a software-development kit (SDK) to
install; building the firmware also requires a cross-compiler for the
Xtensa
architecture. The SDK includes an emulator that can be used during
the development process; the SOF web site also notes that
"proprietary compilers and emulators
" are available.
Currently, only Xtensa-based digital signal processors are supported, but
the project's intent is to eventually support a wider range of hardware.
The firmware itself is based on its own miniature kernel; it would appear that a new kernel was developed rather than adapting one of the (many) existing tiny kernels in circulation. It includes an earliest-deadline first scheduler and supports basic concepts like memory allocation, interrupt handling, work queues, and more. Using that, the firmware runs an "audio task" whose job is to move data between the DMA buffers and the audio-processing components.
On the kernel side, SOF appears to present a semi-standard interface that all drivers can use, but there is still a significant amount of device-specific code required. The code to support SOF-based devices can be found in the ALSA system-on-chip tree (git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc.git). It is not currently in the mainline; it also does not appear in linux-next, so it will almost certainly not make an appearance before the 4.18 development cycle. There is a mailing list with a fair amount of traffic; almost all of it comes from Intel addresses, which is unsurprising for a project that has only just been opened up to the world.
This project is in its infancy (despite the nearly 18 months of history on the mailing list), but it has the potential to make things better in a number of ways. Manufacturers that participate in it may end up with higher-quality firmware with less effort. Developers interested in doing new things with audio hardware should find SOF-based devices to be a good starting point. And, if the project succeeds, we'll all have systems running a bit more free software at the lowest levels, which seems like a good thing.
(For the curious, the other project announced in this talk was the ACRN hypervisor. It is designed for safety-critical systems and appears to support many of the features found in systems like seL4.)
[Thanks to the Linux Foundation, LWN's travel sponsor, for supporting your editor's travel to ELC.]
The strange story of the ARM Meltdown-fix backport
Alex Shi's posting of a patch series backporting a set of Meltdown fixes for the arm64 architecture to the 4.9 kernel might seem like a normal exercise in making important security fixes available on older kernels. But this case raised a couple of interesting questions about why this backport should be accepted into the long-term-support kernels — and a couple of equally interesting answers, one of which was rather better received than the other.The Meltdown vulnerability is most prominent in the x86 world, but it is not an Intel-only problem; some (but not all) 64-bit ARM processors suffer from it as well. The answer to Meltdown is the same in the ARM world as it is for x86 processors: kernel page-table isolation (KPTI), though the details of its implementation necessarily differ. The arm64 KPTI patches entered the mainline during the 4.16 merge window. ARM-based systems notoriously run older kernels, though, so it is natural to want to protect those kernels from these vulnerabilities as well.
When Shi posted the 4.9 backport, stable-kernel maintainer Greg Kroah-Hartman responded with a pair of questions: why has a separate backport been done when the Android Common kernel tree already contains the Meltdown work, and what sort of testing has been done on this backport? In both cases, the answer illustrated some interesting aspects of how the ARM vendor ecosystem works.
Android Common and LTS kernels
The Android Common kernels are maintained by Google as part of the Android Open-Source Project; they are meant to serve as a base for vendors to use when creating their device-specific kernels. These kernels start with the long-term support (LTS) kernels, but then add a number of Android-specific features, including the energy-aware scheduling work, features that haven't made it into the mainline for a number of reasons, and more. They also contain backports of important features and fixes, including the Meltdown fixes.
The Meltdown-fix backport was quite a bit of work, and it has gone through extensive testing in the Android kernel. Kroah-Hartman worried that the new backport may not have all of the necessary pieces or have been as extensively validated as the Android work; as such, it may not be something that should appear in the LTS kernels. The analogous effort for x86 should not be an example to follow, he said:
The problem with this idea is that not every ARM system is running Android, and pulling from the Android kernel will not work for vendors whose kernels are closer to the mainline. As Mark Brown put it:
Those vendors would like to have a long-term supported version of the Meltdown mitigations that does not require dragging in all of the other changes that accumulate in the Android kernels. As Brown pointed out, there are increasing numbers of vendors that are doing what the community has been asking for years and staying closer to the mainline. Not providing a proper backport of these important fixes could be seen as breaking the promise that the community has made: run the officially supported stable kernels and you will get the fixes for significant problems.
There is, thus, a reasonable argument to be made that a proper set of backports for the Meltdown fixes should find its way into the LTS kernels. One little problem remains, though: a proper backport should be known to actually work.
Testing deemed optional
Shi's response to Kroah-Hartman's question about testing was, in its
entirety: "Oh, I have no A73/A75 cpu, so I can not reproduce meltdown
bug.
" Reproducing the bug on the A73 would be a bit of a
challenge, since that processor does not suffer from Meltdown, but A75
does, so asking for testing results on that CPU does not seem entirely out
of line. When Kroah-Hartman repeated his request for testing, though, Ard
Biesheuvel responded:
Upon receipt of that message, Kroah-Hartman dropped the patch series entirely, complaining
that: "I can't believe we are having the argument of 'Test that your
patches actually work'
". He later added that if the developers working on the
backport don't have both the hardware and the exploit code, "then
someone is doing something seriously wrong
". He urged them to
complain to ARM Ltd to get that problem fixed.
At that point, the conversation stopped. Whether the testing problem is on its way toward a solution has not been revealed. It does seem right that the fixes should be merged into the LTS kernels; otherwise the promises that the community has made regarding those kernels will start to look hollow. But the vendors depending on the LTS kernels also have a right to fixes that somebody has actually bothered to test; anybody who has worked in system software for any period of time knows that just checking for adherence to a specification is no guarantee of a working solution.
Porting Fedora to RISC-V
In my previous article, I gave an introduction to the open architecture of RISC-V. This article looks at how I and a small team of Fedora users ported a large part of the Fedora package set to RISC-V. It was a daunting task, especially when there is no real hardware or existing infrastructure, but we were able to get there in a part-time effort over a year and a half or so.
How to bootstrap
The first question I'm usually asked is: How do you bootstrap Linux on a new architecture? We were lucky that most of the seriously hard work — adding support to the kernel and the compiler — was already done by the RISC-V Foundation about two years ago. However there's still the rather large problem that a .riscv64.rpm cannot be built using rpmbuild, because Fedora's RPM does not support cross-compilation, so we must use a Fedora/RISC-V machine. That led to another problem, of course: Fedora/RISC-V didn't exist.
The solution is to take a small Fedora x86-64 chroot environment, and remove all of the x86-64 binaries and libraries from it (everything else — data files, config files, directories and whatever else — can stay). After that, build a GCC cross-compiler that will run on the x86-64 host, cross-compile popular GNU tools and libraries for RV64GC (RISC-V 64-bit general purpose with compressed instructions) and install them into the chroot environment in place of the x86 programs that were just deleted. The last step is to mechanically construct a disk image from this chroot environment and to boot it under QEMU. After many attempts at that you will have a Fedora/RISC-V environment that can run rpmbuild. Build a few hundred RPMs, tediously, while manually resolving build problems and circular build dependencies, until there is enough to build a pristine disk image composed entirely of RPMs.
All of that does not complete the process by any means. Next up is to use an autobuilder to crunch several times through the 20,000+ packages that make up Fedora, again manually fixing compile problems and build dependencies. All of this is done on a $4,000 16-core Intel Xeon system with a pile of SSDs — and without a hint of irony.
After months of effort, over two-thirds of all Fedora packages are done and the rest is really a matter of waiting and fixing problems as they come up.
Myself, David Abdurachmanov, Stefan O'Rear, and others have been through this whole process three times. Back in September 2016 we started the effort and got most of Fedora done by Christmas. But glibc for RISC-V was not stable at that point and our work was broken by changes to the glibc ABI, which meant we had to re-bootstrap everything from scratch. The recent release of glibc 2.27 with stable ABI support for RISC-V means that our current bootstrap attempt will likely be the final one.
Freedom
Fedora's motto is "Freedom, Friends, Features, First". RISC-V may offer the first chance for real "Freedom" all the way down to the hardware. Like Intel and AMD, it has a "Machine Mode" (similar to Intel System Management Mode) running below the operating system but, unlike those, the RISC-V Machine Mode is all open source. Although it's likely that the highest performance chips will be proprietary, there will be a variety of open options, both for full custom ASICs and FPGAs, so where you really need assurance that the CPU is as designed and the freedom to tinker you can have it.
Right now, you can put an open RISC-V design such as the 64-bit Rocket core onto a reasonably priced FPGA, such as the Nexys 4 DDR, and with a certain amount of effort run Fedora on it. This is a fun learning project, and gives you a reasonable amount of assurance. Unfortunately the Xilinx chip and toolchain used on the Nexys are highly proprietary. In the future it is hoped that Project IceStorm will reverse-engineer a large enough FPGA to enable a 64-bit core to be developed using a completely free toolchain (currently only 32-bit embedded RISC-V cores can be run that way).
In a few months to a year there should be a selection of development boards with fully open cores (unfortunately mixed with proprietary memory interfaces and I/O) that will run Fedora out of the box.
Fedora/RISC-V will only be around as long as it stays relevant, so that raises a question: Will RISC-V succeed in the long term? I think it is assured a place as a research platform. CPU researchers always want something they can just download and use without licensing hassles; something that is simple to implement and integrate. There have already been (by my count) six research chips based on RISC-V that have actually been manufactured.
Another use case is manufacturers that want cores for specialized roles, but don't want to pay license fees to ARM or others. As mentioned in the previous article, Western Digital is planning to ship a billion RISC-V cores per year in its hard drives. Although most of the targets will be in the embedded space, having an off-the-shelf Linux distribution available may be helpful in higher-end designs such as in-car displays, single-purpose devices like fitness bands, heating controls, and satellite navigation systems — or even no-name phones and tablets.
My particular interest is in servers, and I think that realistically RISC-V is a very long way off; there are also many opportunities to mess things up along the way. Servers require multi-year or decades-long commitments to standards, specifications, ABIs, and the enterprise; it remains to be seen if RISC-V will provide that.
To try out Fedora on RISC-V, I recommend looking at the Fedora/RISC-V wiki page and grabbing bootable Fedora/RISC-V disk images that can be run under QEMU 2.12 on any Linux machine. Look at the readme.txt file for information on using those images with QEMU. The project has an IRC channel — #fedora-riscv on freenode. There are no mailing lists or special development forks because the aim is to get everything upstream and into the ordinary Fedora dist-git repositories. The aim is no less than feature parity with x86-64 and other Fedora architectures, eventually, and to provide downloadable disk images or installers for RISC-V hardware as it becomes available — turning RISC-V into a first-class Fedora architecture.
Brief items
Security
Security quotes of the week
Play Protect uses a variety of different tactics to keep users and their data safe, but the impact of machine learning is already quite significant: 60.3% of all Potentially Harmful Apps were detected via machine learning, and we expect this to increase in the future.
Kernel development
Kernel release status
The current development kernel is 4.16-rc6, released on March 18. It would appear that this cycle is on track to complete in nine weeks. "Go test, things are stable and there's no reason to worry, but all the usual reasons to just do a quick build and verification that everything works for everybody. Ok?"
There are seven problems listed in the 4.16-rc6 regression report.
Stable updates: 4.15.10 and 4.14.27 were released on March 18, followed by 4.9.88, 4.4.122, and 3.18.100 on March 18. 4.15.11 and 4.14.28 showed up on March 19, and 4.15.12 and 4.14.29 came on March 21.
Introducing the syzbot dashboard
"Syzbot" is an automated system that runs the syzkaller fuzzer on the kernel and reports the resulting crashes. Dmitry Vyukov has announced the availability of a web site displaying the outstanding reports. "The dashboard shows info about active bugs reported by syzbot. There are ~130 active bugs and I think ~2/3 of them are actionable (still happen and have a reproducer or are simple enough to debug)."
Quotes of the week
Second rule of shrinkers: See the first rule.
#define ICE_P(x) (sizeof(int) == sizeof(*(1 ? ((void*)((x) * 0l)) : (int*)1)))
Development
Malcolm: Usability improvements in GCC 8
Over on the Red Hat Developer Program blog, David Malcolm describes a number of usability improvements that he has made for the upcoming GCC 8 release. Malcolm has made a number of the C/C++ compiler error messages much more helpful, including adding hints for integrated development environments (IDEs) and other tools to suggest fixes for syntax and other kinds of errors. "[...] the code is fine, but, as is common with fragments of code seen on random websites, it’s missing #include directives. If you simply copy this into a new file and try to compile it as-is, it fails. This can be frustrating when copying and pasting examples – off the top of your head, which header files are needed by the above? – so for gcc 8 I’ve added hints telling you which header files are missing (for the most common cases)." He has various examples showing what the new error messages and hints look like in the blog post.
Stone: A new era for Linux's low-level graphics - Part 1
Daniel Stone begins a series on how the Linux graphic stack has improved in recent times. "This has made mainline Linux much more attractive: the exact same generic codebases of GNOME and Weston that I'm using to write this blog post on an Intel laptop run equally well on AMD workstations, low-power NXP boards destined for in-flight entertainment, and high-end Renesas SoCs which might well be in your car. Now that the drivers are easy to write, and applications are portable, we've seen over ten new DRM drivers merged to the upstream kernel since atomic modesetting was merged."
GStreamer 1.14 released
The GStreamer team has announced a major feature release of the GStreamer cross-platform multimedia framework. Highlights include WebRTC support, experimental support for the next-gen royalty-free AV1 video codec, support for the Secure Reliable Transport (SRT) video streaming protocol, and much more. The release notes contain more details.RawTherapee 5.4 released
Version 5.4 of the RawTherapee image-processing tool is out. New features include a new histogram-matching tool, a new HDR tone-mapping tool, a number of user-interface and performance improvements, and quite a bit more.Development quotes of the week
All of this is open source. I can be reading the code for any of these tools within 30 seconds, and for many of these tools I already have their code checked out somewhere on my filesystem. It gets even better, though: these projects don’t just make their code available - they accept patches, too! Why wouldn’t we take advantage of this tremendous opportunity?
I often meet people who are willing to contribute to one project, but not another. Some people will shut down when they’re faced with a problem that requires them to dig into territory that they’re unfamiliar with. In Sway, for example, it’s often places like libinput or mesa. These tools might seem foreign and scary - but to these people, at some point, so did Sway. In reality these codebases are quite accessible.
Miscellaneous
Six more companies adopt GPLv3 termination language
Red Hat has announced that six more companies (CA Technologies, Cisco, HPE, Microsoft, SAP, and SUSE) have agreed to apply the GPLv3 termination conditions (wherein a violator's license is automatically restored if the problem is fixed in a timely manner) to GPLv2-licensed code. "GPL version 3 (GPLv3) introduced an approach to termination that offers distributors of the code an opportunity to correct errors and mistakes in license compliance. This approach allows for enforcement of license compliance consistent with a community in which heavy-handed approaches to enforcement, including for financial gain, are out of place."
Page editor: Jake Edge
Announcements
Newsletters
Distributions and system administration
- DistroWatch Weekly (March 19)
- Lunar Linux Weekly News (March 16)
- Mageia Weekly Roundup (March 19)
- openSUSE Tumbleweed Review of the Week (March 16)
- Ubuntu Kernel Team Weekly Summary (March 21)
- Ubuntu Server development summary (March 20)
Development
- Emacs News (March 19)
- What's cooking in git.git (March 20)
- Git Rev News (March 21)
- LLVM Weekly (March 19)
- LXC/LXD/LXCFS Weekly Status (March 19)
- OCaml Weekly News (March 20)
- OpenStack Technical Committee Report (March 20)
- OpenStack Technical Committee Status Update (March 16)
- Perl Weekly (March 18)
- Weekly changes in and around Perl 6 (March 19)
- PostgreSQL Weekly News (March 18)
- Python Weekly Newsletter (March 15)
- Ruby Weekly News (March 15)
- This Week in Rust (March 20)
- Wikimedia Tech News (March 19)
Meeting minutes
- Fedora FESCO meeting minutes (March 16)
- GNOME Foundation Board Minutes (March 13)
- GNOME Foundation Board Minutes (March 20)
Calls for Presentations
Netdev 0x12 Conference
The NetDev Society has announced that Netdev 0x12 will take place July 11-13 in Montreal, Canada. The call for papers closes May 1.CFP Deadlines: March 22, 2018 to May 21, 2018
The following listing of CFP deadlines is taken from the LWN.net CFP Calendar.
| Deadline | Event Dates | Event | Location |
|---|---|---|---|
| March 25 | May 7 May 10 |
8th RISC-V Workshop | Barcelona, Spain |
| March 30 | May 22 May 23 |
Infoshare 2018 | Gdańsk, Poland |
| March 30 | September 24 September 27 |
ApacheCon North America | Montreal, Canada |
| March 31 | July 2 July 4 |
Pass the SALT 2018 | Lille, France |
| April 3 | August 17 August 19 |
DevConf.us 2018 | Boston, MA, USA |
| April 4 | June 4 June 6 |
PyCon Israel 2018 | Israel |
| April 15 | July 7 July 12 |
Libre Software Meeting | Strasbourg, France |
| April 15 | June 22 June 24 |
XenProject Developer and Design Summit | Nanjing, China |
| April 18 | May 18 May 19 |
French Perl Workshop 2018 | Paris, France |
| April 20 | May 25 May 27 |
openSUSE Conference 2018 | Prague, Czech Republic |
| April 20 | June 8 June 10 |
South East Linux Fest | Charlotte, NC, USA |
| April 29 | August 29 August 31 |
Open Source Summit | Vancouver, Canada |
| April 29 | July 6 July 11 |
GUADEC | Almería, Spain |
| April 30 | August 7 August 11 |
JuliaCon 2018 | London, UK |
| May 4 | August 4 August 5 |
DevConf India | Bangalore, India |
| May 15 | October 29 October 30 |
OpenWrt Summit | Lisbon, Portugal |
| May 16 | October 18 October 19 |
Osmocom Conference 2018 | Berlin, Germany |
| May 20 | August 11 August 12 |
GNOME.Asia Summit | Taipei, Taiwan |
| May 20 | July 11 July 13 |
Netdev 0x12 | Montréal, Québec, Canada |
| May 20 | July 23 July 29 |
EuroPython 2018 | Edinburgh, Scotland, UK |
If the CFP deadline for your event does not appear here, please tell us about it.
Upcoming Events
Registration is now open for DebConf18
DebConf18 will take place July 29-August 5 in Hsinchu, Taiwan. It will be preceded by DebCamp, July 21-27 and Open Day on July 28. Registration is open and to receive bursaries (sponsorship) for food, accommodation, or travel, you must be registered by April 13.Events: March 22, 2018 to May 21, 2018
The following event listing is taken from the LWN.net Calendar.
| Date(s) | Event | Location |
|---|---|---|
| March 19 March 23 |
Linaro Connect | Hong Kong, China |
| March 22 March 25 |
FOSSASIA Summit | Singapore, Singapore |
| March 23 March 25 |
LibreOffice Conference Indonesia | Surabaya, Indonesia |
| March 24 March 25 |
LibrePlanet | Cambridge, MA, USA |
| March 26 March 28 |
Open Networking Summit | Los Angeles, CA, USA |
| March 30 April 2 |
Easterhegg 2018 | Würzburg, Germany |
| April 9 April 12 |
‹Programming› 2018 | Nice, France |
| April 9 April 11 |
QCon.ai Applied AI for Developers | San Francisco, CA, USA |
| April 9 April 13 |
OpenFabrics Alliance Workshop 2018 | Boulder, CO, USA |
| April 11 April 14 |
MiniDebConf Curitiba 2018 | Curitiba, Brazil |
| April 14 April 15 |
Prague Makerfaire | Prague, Czech Republic |
| April 14 April 15 |
curl up 2018 | Stockholm, Sweden |
| April 16 April 17 |
LLVM European Developers Meeting | Bristol, UK |
| April 16 April 18 |
Power Management and Scheduling Summit | Pisa, Italy |
| April 23 | foss-north 2018 | Gothenburg, Sweden |
| April 23 April 25 |
Storage, Filesystem and Memory-Management Summit | Park City, UT, USA |
| April 26 April 27 |
FLOSSUK – Spring Conference | Edinburgh, Scotland |
| April 27 April 28 |
Grazer Linuxtage 2018 | Graz, Austria |
| April 28 April 29 |
LinuxFest Northwest | Bellingham, WA, USA |
| May 2 May 4 |
KubeCon+CloudNativeCon | Copenhagen, Denmark |
| May 3 May 5 |
Linuxwochen Wien 2018 | Vienna, Austria |
| May 4 May 5 |
PyDays Vienna | Vienna, Austria |
| May 7 May 10 |
8th RISC-V Workshop | Barcelona, Spain |
| May 7 May 13 |
Wireless-Meshup (Wireless Battle Mesh) | Berlin, Germany |
| May 9 May 13 |
PyCon | Cleveland, OH, USA |
| May 16 May 20 |
Mini-DebConf | Hamburg, Germany |
| May 17 May 18 |
Devopsdays Silicon Valley | Mountain View, CA, USA |
| May 18 May 19 |
French Perl Workshop 2018 | Paris, France |
If your event does not appear here, please tell us about it.
Event Reports
SCaLE 16x Wrap-Up
The SCALE Team wraps up Southern California Linux Expo (SCaLE) 16X, which took place March 8-11 in Pasadena, CA. "Over 200 sessions. More than 100 exhibitors. Just north of 3,300 attendees took to the expo floor, speaker sessions, exams, installfest, and workshops over four days." Videos are being processed and will be posted to YouTube.
Security updates
Alert summary March 15, 2018 to March 21, 2018
| Dist. | ID | Release | Package | Date |
|---|---|---|---|---|
| Arch Linux | ASA-201803-14 | clamav | 2018-03-20 | |
| Arch Linux | ASA-201803-15 | curl | 2018-03-20 | |
| Arch Linux | ASA-201803-13 | firefox | 2018-03-19 | |
| Arch Linux | ASA-201803-16 | lib32-curl | 2018-03-20 | |
| Arch Linux | ASA-201803-18 | lib32-libcurl-compat | 2018-03-20 | |
| Arch Linux | ASA-201803-20 | lib32-libcurl-gnutls | 2018-03-20 | |
| Arch Linux | ASA-201803-17 | libcurl-compat | 2018-03-20 | |
| Arch Linux | ASA-201803-19 | libcurl-gnutls | 2018-03-20 | |
| Arch Linux | ASA-201803-12 | libvorbis | 2018-03-19 | |
| Arch Linux | ASA-201803-11 | ntp | 2018-03-18 | |
| Arch Linux | ASA-201803-10 | samba | 2018-03-14 | |
| CentOS | CESA-2018:0515 | C6 | 389-ds-base | 2018-03-14 |
| CentOS | CESA-2018:0526 | C6 | firefox | 2018-03-15 |
| CentOS | CESA-2018:0549 | C6 | firefox | 2018-03-20 |
| CentOS | CESA-2018:0527 | C7 | firefox | 2018-03-15 |
| CentOS | CESA-2018:0549 | C7 | firefox | 2018-03-20 |
| CentOS | CESA-2018:0512 | C6 | kernel | 2018-03-14 |
| CentOS | CESA-2018:0517 | C6 | libreoffice | 2018-03-14 |
| CentOS | CESA-2018:0504 | C6 | mailman | 2018-03-14 |
| CentOS | CESA-2018:0516 | C6 | qemu-kvm | 2018-03-14 |
| Debian | DLA-1307-1 | LTS | clamav | 2018-03-16 |
| Debian | DLA-1309-1 | LTS | curl | 2018-03-18 |
| Debian | DSA-4136-1 | stable | curl | 2018-03-14 |
| Debian | DLA-1308-1 | LTS | firefox-esr | 2018-03-15 |
| Debian | DSA-4139-1 | stable | firefox-esr | 2018-03-15 |
| Debian | DSA-4143-1 | stable | firefox-esr | 2018-03-17 |
| Debian | DSA-4145-1 | stable | gitlab | 2018-03-18 |
| Debian | DSA-4137-1 | stable | libvirt | 2018-03-14 |
| Debian | DSA-4140-1 | stable | libvorbis | 2018-03-16 |
| Debian | DSA-4141-1 | stable | libvorbisidec | 2018-03-16 |
| Debian | DSA-4138-1 | stable | mbedtls | 2018-03-15 |
| Debian | DSA-4144-1 | stable | openjdk-8 | 2018-03-17 |
| Debian | DSA-4146-1 | stable | plexus-utils | 2018-03-20 |
| Debian | DSA-4142-1 | stable | uwsgi | 2018-03-17 |
| Fedora | FEDORA-2018-035a7a9ccc | F27 | ImageMagick | 2018-03-19 |
| Fedora | FEDORA-2018-af30668257 | F27 | advancecomp | 2018-03-15 |
| Fedora | FEDORA-2018-5649824f49 | F27 | calibre | 2018-03-20 |
| Fedora | FEDORA-2018-ed907ef9a0 | F27 | ceph | 2018-03-14 |
| Fedora | FEDORA-2018-5a249b4214 | F26 | cryptopp | 2018-03-20 |
| Fedora | FEDORA-2018-66c96e0024 | F26 | curl | 2018-03-20 |
| Fedora | FEDORA-2018-8877b4ccac | F27 | curl | 2018-03-20 |
| Fedora | FEDORA-2018-fa0a676067 | F26 | dolphin-emu | 2018-03-20 |
| Fedora | FEDORA-2018-1697970ac4 | F27 | dolphin-emu | 2018-03-20 |
| Fedora | FEDORA-2018-7011a8b0da | F26 | firefox | 2018-03-19 |
| Fedora | FEDORA-2018-9406d8e9aa | F26 | firefox | 2018-03-20 |
| Fedora | FEDORA-2018-92031bb1ed | F27 | firefox | 2018-03-15 |
| Fedora | FEDORA-2018-a068ade416 | F27 | firefox | 2018-03-19 |
| Fedora | FEDORA-2018-c38e40a4bf | F27 | golang | 2018-03-20 |
| Fedora | FEDORA-2018-fff755ee8e | F26 | jhead | 2018-03-20 |
| Fedora | FEDORA-2018-bf60ec1389 | F26 | kernel | 2018-03-16 |
| Fedora | FEDORA-2018-296bf0c332 | F26 | kernel | 2018-03-20 |
| Fedora | FEDORA-2018-cf76003e1f | F27 | kernel | 2018-03-16 |
| Fedora | FEDORA-2018-959aac67a3 | F27 | kernel | 2018-03-20 |
| Fedora | FEDORA-2018-199e6065ee | F26 | libcdio | 2018-03-20 |
| Fedora | FEDORA-2018-4fb7cdd27f | F27 | libgit2 | 2018-03-20 |
| Fedora | FEDORA-2018-c5c651ac44 | F27 | libldb | 2018-03-14 |
| Fedora | FEDORA-2018-061bafe369 | F27 | libvorbis | 2018-03-20 |
| Fedora | FEDORA-2018-55b7018374 | F27 | mailman | 2018-03-16 |
| Fedora | FEDORA-2018-8be89d9ad6 | F26 | ming | 2018-03-20 |
| Fedora | FEDORA-2018-38a0e1e6f5 | F27 | ming | 2018-03-20 |
| Fedora | FEDORA-2018-5a5f51753c | F26 | net-snmp | 2018-03-20 |
| Fedora | FEDORA-2018-71fac70309 | F26 | patch | 2018-03-20 |
| Fedora | FEDORA-2018-2999cf6426 | F26 | postgresql | 2018-03-14 |
| Fedora | FEDORA-2018-a32082df51 | F27 | postgresql | 2018-03-14 |
| Fedora | FEDORA-2018-bd1147f152 | F27 | python-django | 2018-03-15 |
| Fedora | FEDORA-2018-7d0acd608b | F26 | samba | 2018-03-20 |
| Fedora | FEDORA-2018-c5c651ac44 | F27 | samba | 2018-03-14 |
| Fedora | FEDORA-2018-0746dac335 | F26 | xen | 2018-03-20 |
| Fedora | FEDORA-2018-9cdf18a850 | F26 | zsh | 2018-03-20 |
| Gentoo | 201803-08 | adobe-flash | 2018-03-18 | |
| Gentoo | 201803-07 | jabberd2 | 2018-03-18 | |
| Gentoo | 201803-06 | oracle-jdk-bin | 2018-03-18 | |
| Gentoo | 201803-09 | plasma-workspace | 2018-03-18 | |
| Mageia | MGASA-2018-0170 | 5, 6 | SDL_image | 2018-03-19 |
| Mageia | MGASA-2018-0173 | 6 | bugzilla | 2018-03-19 |
| Mageia | MGASA-2018-0169 | 6 | clamav | 2018-03-14 |
| Mageia | MGASA-2018-0172 | 6 | kernel | 2018-03-19 |
| Mageia | MGASA-2018-0175 | 6 | leptonica | 2018-03-19 |
| Mageia | MGASA-2018-0180 | 5, 6 | libtiff | 2018-03-19 |
| Mageia | MGASA-2018-0179 | 5, 6 | libvorbis | 2018-03-19 |
| Mageia | MGASA-2018-0165 | 6 | memcached | 2018-03-14 |
| Mageia | MGASA-2018-0176 | 6 | microcode | 2018-03-19 |
| Mageia | MGASA-2018-0167 | 5, 6 | php | 2018-03-14 |
| Mageia | MGASA-2018-0166 | 6 | python-django | 2018-03-14 |
| Mageia | MGASA-2018-0171 | 5, 6 | python-pycrypto | 2018-03-19 |
| Mageia | MGASA-2018-0177 | 5, 6 | shadow-utils | 2018-03-19 |
| Mageia | MGASA-2018-0174 | 6 | sharutils | 2018-03-19 |
| Mageia | MGASA-2018-0178 | 5 | xerces-c | 2018-03-19 |
| Mageia | MGASA-2018-0168 | 6 | zsh | 2018-03-14 |
| openSUSE | openSUSE-SU-2018:0704-1 | 42.3 | Chromium | 2018-03-16 |
| openSUSE | openSUSE-SU-2018:0733-1 | 42.3 | GraphicsMagick | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0734-1 | 42.3 | SDL2, SDL2_image | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0680-1 | 42.3 | adminer | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0732-1 | 42.3 | exempi | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0681-1 | 42.3 | firefox | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0737-1 | 42.3 | firefox | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0684-1 | 42.3 | java-1_7_0-openjdk | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0684-1 | 42.3 | java-1_7_0-openjdk | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0679-1 | 42.3 | java-1_8_0-openjdk | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0703-1 | 42.3 | kernel-firmware | 2018-03-16 |
| openSUSE | openSUSE-SU-2018:0735-1 | 42.3 | libid3tag | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0731-1 | 42.3 | libraw | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0730-1 | 42.3 | mariadb | 2018-03-17 |
| openSUSE | openSUSE-SU-2018:0725-1 | 42.3 | php5 | 2018-03-17 |
| openSUSE | openSUSE-SU-2018:0688-1 | 42.3 | postgresql94 | 2018-03-15 |
| openSUSE | openSUSE-SU-2018:0736-1 | 42.3 | postgresql95 | 2018-03-18 |
| openSUSE | openSUSE-SU-2018:0710-1 | 42.3 | ucode-intel | 2018-03-16 |
| openSUSE | openSUSE-SU-2018:0745-1 | 42.3 | various KMPs | 2018-03-20 |
| openSUSE | openSUSE-SU-2018:0738-1 | 42.3 | xmltooling | 2018-03-18 |
| Oracle | ELSA-2018-0526 | OL6 | firefox | 2018-03-15 |
| Oracle | ELSA-2018-0549 | OL6 | firefox | 2018-03-19 |
| Oracle | ELSA-2018-0527 | OL7 | firefox | 2018-03-15 |
| Oracle | ELSA-2018-0549 | OL7 | firefox | 2018-03-19 |
| Oracle | ELSA-2018-0512 | OL6 | kernel | 2018-03-15 |
| Oracle | ELSA-2018-0517 | OL6 | libreoffice | 2018-03-14 |
| Red Hat | RHSA-2018:0548-01 | ceph | 2018-03-15 | |
| Red Hat | RHSA-2018:0546-01 | EL7 | ceph | 2018-03-15 |
| Red Hat | RHSA-2018:0560-01 | RHEV4 | collectd | 2018-03-20 |
| Red Hat | RHSA-2018:0528-01 | OSP9.0 | erlang | 2018-03-15 |
| Red Hat | RHSA-2018:0526-01 | EL6 | firefox | 2018-03-15 |
| Red Hat | RHSA-2018:0549-01 | EL6 EL7 | firefox | 2018-03-19 |
| Red Hat | RHSA-2018:0527-01 | EL7 | firefox | 2018-03-15 |
| Red Hat | RHSA-2018:0520-01 | EL6 | flash-plugin | 2018-03-14 |
| Red Hat | RHSA-2018:0521-01 | EL6 | java-1.7.1-ibm | 2018-03-14 |
| Red Hat | RHSA-2018:0574-01 | SCL | rh-mariadb101-mariadb and rh-mariadb101-galera | 2018-03-21 |
| Scientific Linux | SLSA-2018:0515-1 | SL6 | 389-ds-base | 2018-03-14 |
| Scientific Linux | SLSA-2018:0526-1 | SL6 | firefox | 2018-03-15 |
| Scientific Linux | SLSA-2018:0549-1 | SL6 SL7 | firefox | 2018-03-19 |
| Scientific Linux | SLSA-2018:0527-1 | SL7 | firefox | 2018-03-15 |
| Scientific Linux | SLSA-2018:0512-1 | SL6 | kernel | 2018-03-14 |
| Scientific Linux | SLSA-2018:0517-1 | SL6 | libreoffice | 2018-03-14 |
| Scientific Linux | SLSA-2018:0516-1 | SL6 | qemu-kvm | 2018-03-14 |
| Slackware | SSA:2018-074-01 | curl | 2018-03-15 | |
| Slackware | SSA:2018-075-01 | firefox | 2018-03-16 | |
| Slackware | SSA:2018-076-01 | libvorbis | 2018-03-17 | |
| SUSE | SUSE-SU-2018:0743-1 | OS6 SLE12 | java-1_7_1-ibm | 2018-03-19 |
| SUSE | SUSE-SU-2018:0694-1 | SLE12 | java-1_7_1-ibm | 2018-03-15 |
| SUSE | SUSE-SU-2018:0697-1 | OS6 SLE12 | mariadb | 2018-03-15 |
| SUSE | SUSE-SU-2018:0698-1 | SLE12 | mariadb | 2018-03-15 |
| SUSE | SUSE-SU-2018:0705-1 | SLE11 | microcode_ctl | 2018-03-16 |
| SUSE | SUSE-SU-2018:0708-1 | OS6 SLE12 | ucode-intel | 2018-03-16 |
| SUSE | SUSE-SU-2018:0678-1 | SLE11 | xen | 2018-03-15 |
| Ubuntu | USN-3598-1 | 14.04 16.04 17.10 | curl | 2018-03-15 |
| Ubuntu | USN-3596-1 | 14.04 16.04 17.10 | firefox | 2018-03-14 |
| Ubuntu | USN-3599-1 | 14.04 16.04 17.10 | firefox | 2018-03-16 |
| Ubuntu | USN-3597-1 | 17.10 | linux, linux-raspi2 | 2018-03-15 |
| Ubuntu | USN-3597-2 | 16.04 | linux-hwe | 2018-03-15 |
| Ubuntu | USN-3601-1 | 14.04 16.04 17.10 | memcached | 2018-03-19 |
| Ubuntu | USN-3603-2 | 12.04 | paramiko | 2018-03-20 |
| Ubuntu | USN-3603-1 | 14.04 16.04 17.10 | paramiko | 2018-03-20 |
| Ubuntu | USN-3600-1 | 14.04 16.04 17.10 | php5, php7.0, php7.1 | 2018-03-19 |
| Ubuntu | USN-3602-1 | 14.04 16.04 | tiff | 2018-03-20 |
Kernel patches of interest
Kernel releases
Architecture-specific
Build system
Core kernel
Device drivers
Device-driver infrastructure
Filesystems and block layer
Memory management
Networking
Security-related
Virtualization and containers
Miscellaneous
Page editor: Rebecca Sobol
