The 4.11 merge window opens
- 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.
- 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.
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 | |
---|---|
Kernel | Releases/4.11 |