|
|
Subscribe / Log in / New account

The 4.11 merge window opens

By Jonathan Corbet
February 22, 2017
As of this writing, just over 4,400 non-merge changesets have been pulled into the mainline repository since the 4.10 release. The 4.11 merge window is, thus, off and rolling, though experience says that there is a lot of work that needs to be merged still. Some of the more interesting user-visible changes merged so far include:

  • Work has resumed on the long-stalled perf ftrace work, which seeks to create a perf-based interface to the ftrace tracing subsystem. There will be a simple perf ftrace command in 4.11, with more to come in subsequent development cycles.

  • The TIMER_STATS feature, which made some timer statistics available in /proc/timer_stats, has been removed. It was seen as a security problem, since it could leak process information across namespaces; the tracing subsystem should be used to get this information instead.

  • The ext4 filesystem supports a new ioctl() command called EXT4_IOC_SHUTDOWN. It indicates that a volume is being destroyed and that there is no need to flush any data remaining in memory. This feature mirrors the existing XFS XFS_IOC_GOINGDOWN command; future work will probably promote it to the virtual filesystem layer with a name like FS_IOC_SHUTDOWN.

  • The CIFS filesystem now supports SMB3 per-share encryption.

  • The multiqueue block layer finally has support for I/O scheduling. That is useful in its own right, but the real news is that it enables the merging of the long-awaited BFQ I/O scheduler. That, says block maintainer Jens Axboe, "should be ready for 4.12".

  • The block layer has also gained support for the Opal storage specification, providing a mechanism for the encryption of stored data.

  • The device-mapper RAID 4/5/6 implementation has gained support for journaling, closing the "write hole" that could cause data loss in a badly timed crash.

  • The new virtual file /sys/kernel/security/lsm can be read to see which security modules are active on the system.

  • There is a new "SMC-R" socket type intended for communication over an RDMA transport. Alas, this feature would appear to be entirely undocumented in the kernel. Some information can seemingly be found in RFC 7609 and this slide deck [PDF].

  • The new "psample" module allows for the sampling of packets passing through an interface, possibly filtered with a classifier.

  • New hardware support includes:

    • Media: SPI-connected infrared LEDs, Mediatek IR remote receivers, NXP i.MX6 video data order adapters, Toshiba ET8EK8 5MP camera sensors, ZyDAS ZD1301 demodulators, and STMicroelectronics DELTA multi-format video decoders.

    • Miscellaneous: Aspeed AST2500 and AST2400 static memory controllers, Intel PCH/PCU SPI flash controllers, ST Microelectronics STTS751 temperature sensors, Maxim MAX14656 USB charger detectors, X-Powers AXP20X and AXP22X AC power supplies, Renesas OSTM timers, Qualcomm interrupt combiners, Motorola CPCAP PMIC voltage regulators, Lantiq SSC SPI controllers, Synopsys DW memory card interfaces, ZyDAS ZD1301 USB interfaces, Atari Falcon PATA controllers, aQuantia AQC107/AQC108-based network interfaces, and Qualcomm Technologies L2-cache performance-monitoring units.

    • Pin control: TI IODelay pin controllers, Intel Gemini Lake pin and GPIO controllers, Allwinner H5 SoC pin controllers, and STMicroelectronics STM32H743 pin controllers.

Changes visible to kernel developers include:

  • The user-space perf tools can now be built with the LLVM Clang compiler.

  • There is a new type for the implementation of reference counters called refcount_t; its purpose is to facilitate defenses against reference-count overflows. In a nutshell, this API looks like:

        #include <linux/refcount.h>
    
        refcount_t count = REFCOUNT_INIT(initial_value);
    
        void refcount_set(refcount_t *r, unsigned int n);
        unsigned int refcount_read(const refcount_t *r);
        bool refcount_add_not_zero(unsigned int i, refcount_t *r);
        void refcount_add(unsigned int i, refcount_t *r);
        bool refcount_inc_not_zero(refcount_t *r);
        void refcount_inc(refcount_t *r);
        bool refcount_sub_and_test(unsigned int i, refcount_t *r);
        bool refcount_dec_and_test(refcount_t *r);
        void refcount_dec(refcount_t *r);
        bool refcount_dec_if_one(refcount_t *r);
        bool refcount_dec_not_one(refcount_t *r);
        bool refcount_dec_and_mutex_lock(refcount_t *r, struct mutex *lock);
        bool refcount_dec_and_lock(refcount_t *r, spinlock_t *lock);
    

    See this commit for the full interface and implementation. This type should be used instead of atomic_t for reference counters; expect a set of conversions of existing atomic_t reference-counting usage over the next development cycle or two.

  • There are two new interfaces for working with the kref type: KREF_INIT() to initialize a kref, and kref_read() to read the embedded counter's value. The purpose here is to better hide the internals of this structure so that they can be changed to use the new refcount_t type.

  • The PAX "structleak" GCC plugin has been ported to the mainline. This plugin will force the initialization of structures that are copied to user space in the hope of preventing information leaks.

  • The kernel now has a SipHash implementation, providing hashing that should be both faster and more secure. See Documentation/siphash.txt for more information.

If the usual schedule holds, the 4.11 merge window will remain open through March 5, and the final 4.11 release can be expected at the end of April. As usual, LWN will continue to watch the patch stream and summarize the rest of the merge window in the coming weeks.

Index entries for this article
KernelReleases/4.11


to post comments


Copyright © 2017, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds