Chapter 30. Kernel

A fix of PT_NOTE entries that were previously corrupted during crashdump

On some HP servers, a kernel crash could lead to the corruption of PT_NOTE entries because of a kernel code defect. As a consequence, the kernel crash dump utility failed to initialize. The provided patch aligns the allocation of PT_NOTE entries so that they are inside one physical page, and thus written and read data is identical. As a result, kernel crash dump now works as expected in the described situation. (BZ#1073651)

Removal of the slub_debug parameter to save memory

The slub_debug parameter enables debugging of the SLUB allocator, which makes each object consume extra memory. If the slub_debug kernel parameter was used, not enough memory was allocated to the kdump capture kernel by the automatic setting on 128 GB systems. Consequently, various tasks from the kdump init script terminated with an Out Of Memory (OOM) error message and no crash dump was saved. The provided patch removes the slub_debug parameter, and crash dump is now saved as expected in the aforementioned scenario. (BZ#1180246)

Removal of a race condition causing a deadlock when a new CPU was attached

Previously, when a new CPU was attached, a race condition between the CPU hotplug and the stop_two_cpus() function could occur causing a deadlock if that migration thread on the new CPU was already marked as active but not enabled. A set of patches has been applied which removes this race condition. As a result, systems with attached new CPUs now run as intended. (BZ#1252281)

Update of the kernel with hugepage migration patches from the upstream

Previously, several types of bugs including the kernel panic could occur with the hugepage migration. A set of patches from the upstream has been backported which fix these bugs. The updated kernel is now more stable and hugepage migration is automatically disabled in architectures other than AMD64 and Intel 64. (BZ#1287322)

Booting kernel with UEFI and the secure boot enabled

When the Unified Extensible Firmware Interface (UEFI) was used and the secure boot was enabled, the operating system failed to boot for all kernels since the 3.10.0-327.3.1.el7.x86_64 kernel. With the update to the 3.10.0-327.4.4.el7 kernel and newer versions the system boots up as expected. (BZ#1290441)

New microcode added into initramfs images for all installed kernels

Previously, when the microcode_ctl package was installed, the postinstall scriptlet rebuilt the initramfs file only for the running kernel and not for any other installed kernels. Consequently, when the build completed, there was an initramfs file for a kernel that was not even installed. The provided fix adds new microcode into initramfs images for all installed kernels. As a result, the superfluous initramfs file is no longer generated. (BZ#1292158)

kernel slab errors caused by a race condition in GFS2 no longer occur

A race condition previously occurred in the GFS2 file system in which two processes simultaneously tried to free kernel slab memory used for directory lookup. As a consequence, when both processes freed the same memory, a slab memory error occurred in the kernel. The GFS2 file system has been patched to eliminate the race condition, and a process now cannot try to free the memory that has already been freed by another process. Now, each process is forced to take turns when trying to free the memory. As a result, kernel slab errors no longer occur. (BZ#1276477)

GFS2 now writes data to the correct location within the file

Previously, the GFS2 file system miscalculated the starting offset when writing files opened with O_DIRECT (Direct I/O) at a location larger than 4 KB. As a consequence, the data was written to an incorrect location in the file. GFS2 has been patched to calculate the correct file offset for Direct I/O writes. As a result, GFS2 now writes data to the correct location within the file. (BZ#1289630)

Dump-capture kernel memory freed when kdump mechanism fails

When crashkernel memory was allocated using the ,high and ,low syntax, there were cases where the reservation of the high portion succeeded but with the reservation of the low portion the kdump mechanism failed. This failure could occur especially on large systems for several reasons. The manually specified crashkernel low memory was too large and thus an adequate memblock region was not found. The kexec utility could load the dump-capture kernel successfully, but booting the dump-capture kernel failed, as there was no low memory. The provided patch set reserves low memory for the dump-capture kernel after the high memory portion has been allocated. As a result, the dump-capture kernel memory is freed if the kdump mechanism fails. The user thus has a chance to take measures accordingly. (BZ#1241236)

The ksc utility no longer fails to file bugs due to the unavailable kabi-whitelists component

In an earlier update, the kabi-whitelists component was changed to the kabi-whitelists sub-component of the kernel component. Consequently, the ksc utility was not able to file bugs, as the kabi-whitelists component value was not active, and the following error message was generated:
Could not create bug.<Fault 32000:"The component value 'kabi-whitelists' is not active">
With this update, the correct sub-component of the kernel component is kabi-whitelisted, and ksc files bugs as expected. (BZ#1328384)

ksc now returns an error instead of crashing when running without mandatory arguments

Previously, the ksc tool terminated unexpectedly when running without the mandatory arguments. With this update, ksc returns an error message and exits gracefully in the described situation. (BZ#1272348)

ext4 file systems can now be resized as expected

Due to a bug in the ext4 code, it was previously impossible to resize ext4 file systems that had 1 kilobyte block size and were smaller than 32 megabytes. A patch has been applied to fix this bug, and the described ext4 file systems can now be resized as expected. (BZ#1172496)

Unexpected behavior when attaching a qdisc to a virtual device no longer occurs

Previously, attaching a qdisc to a virtual device could result in unexpected behavior such as packets being dropped prematurely and reduced bandwidth. With this update, virtual devices have a default tx_queue_len of 1000 and are represented by a device flag. Attaching a qdisc to a virtual device is now supported with default settings and any special handling of the tx_queue_len=0 is no longer needed. (BZ#1152231)

The udev daemon is no longer stopped by dracut

Previously, a dracut script in the initramfs process stopped the udev daemon by using the udevadm control command, which caused the udev daemon to exit. However, the systemd service policy is to restart the daemon. Under certain circumstances, this prevented the system from booting. With this update, the code to stop the udev daemon has been removed from the dracut script, which avoids the described problem. (BZ#1276983)

multi-fsb buffer logging has been fixed

Previously, directory modifications on XFS filesystems with large directory block sizes could lead to a kernel panic and consequent server crash due to the problems with logging the multi-block buffers. The provided patch fixes the multi-fsb buffer logging, and the servers no longer crash in this scenario. (BZ#1356009)

Hard screen lock-up no longer occurs on laptops using integrated graphics in the 6th Generation Intel Core processors

On laptops using integrated graphics in the 6th Generation Intel Core processors, hard screen lock-up previously sometimes occurred when:
  • Moving the cursor between the edges of the monitor
  • Moving the cursor between multiple monitors
  • Changing any aspect of the monitor configuration
  • Docking or undocking the machine
  • Plugging or unplugging a monitor
The bug has been fixed, and the hard lock-up of the screen no longer occurs in these situations. (BZ#1341633)

Multiple problems fixed on systems with persistent memory

Several problems sometimes occurred during boot on systems with persistent memory, either real Non-Volatile Dual In-line Memory Modules (NVDIMMs) or emulated NVDIMMs using the memmap=X!Y kernel command-line parameter.
The onlining of persistent memory caused the following messages to be displayed for every block (128 MB) of pmem devices:
Built 2 zonelists in Zone order, mobility grouping on.  Total pages: 8126731
Policy zone: Normal
The system became unresponsive.
The following BUG message was displayed:
BUG: unable to handle kernel paging request at ffff88007b7eef70
This update fixes the described bugs. (BZ#1367257)

python errors no longer appear when SUDO_USER and USER variables are not set

Previously, when executing in spare environments that do not have SUDO_USER or USER environment variables set, a number of python errors appeared. With this update, undefined SUDO_USER and USER variables are handled correctly, and the errors no longer appear. (BZ#1312057)

CIFS anonymous authentication no longer fails

Previously, the cifs module set values incorrectly for anonymous authentication. Changes made to the samba file server exposed this bug. As a consequence, anonymous authentication failed. This update changes the behavior of the client and sets the correct auth values for anonymous authentication. As a result, CIFS anonymous authentication now works correctly. (BZ#1361407)