KernelNewbies:

Linux 4.8 [https://lkml.org/lkml/2016/10/2/102 has been released] on Sun, 2 Oct 2016.

Shameless spam: LWN.net has published its coverage about [https://lwn.net/Articles/lsfmm2016/ the 2016 Linux Storage, Filesystem, and Memory-Management Summit].

/!\ /!\ Warning: /!\ /!\ The changelog is not complete. It will be available during the next week. Meanwhile, you can read about Linux 4.8 here (or examine [https://kernelnewbies.org/Linux_4.8#head-41a68e7d7eede3a16c612d71c2ead8e67edaadcc the merge list]):

# TableOfContents()

1. Prominent features

1.1. Support for using Transparent Huge Pages in the page cache

Transparent huge pages allow to use pages bigger than 4K (in x86), but until now Linux didn't support the use of transparent huge pages in the page cache (pages used for backing file system data). This release adds support for transparent huge pages in the page cache in tmpfs/shmem (other filesystems may be added in the future).

You can control hugepage allocation policy in tmpfs with mount option huge=. It can have following values: always (attempt to allocate huge pages every time it needs a new page); never (do not allocate huge pages - this is the default); within_size (only allocate huge page if it will be fully within i_size, also respect fadvise()/madvise() hints); advise (only allocate huge pages if requested with fadvise()/madvise());

There's also sysfs knob to control hugepage allocation policy for internal shmem mount: /sys/kernel/mm/transparent_hugepage/shmem_enabled. The mount is used for SysV SHM, memfds, shared anonymous mmaps (of /dev/zero or MAP_ANONYMOUS), GPU drivers' DRM objects, Ashmem. In addition to policies listed above, shmem_enabled allows two further values: deny (for use in emergencies, to force the huge option off from all mounts); force (force the huge option on for all - useful for testing).

Recommended LWN article: [https://lwn.net/Articles/684300/ Two transparent huge page cache implementations]

Code: [https://git.kernel.org/torvalds/c/6fb8ddfc455ca82a3ce674f54298cd20f27ca518 commit 1], [https://git.kernel.org/torvalds/c/dcddffd41d3f1d3bdcc1dce3f1cd142779b6d4c1 2], [https://git.kernel.org/torvalds/c/bae473a423f65e480db83c85b5e92254f6dfcb28 3], [https://git.kernel.org/torvalds/c/dd78fedde4b99b322f2dc849d467d365a82e23ca 4], [https://git.kernel.org/torvalds/c/1010245964415bb7403463115bab2cd26244b445 5], [https://git.kernel.org/torvalds/c/95ecedcd6abbb05d8177331e2fa697888dcd634b 6], [https://git.kernel.org/torvalds/c/b5072380eb619786990cd9eab3ade05d09ccd89e 7], [https://git.kernel.org/torvalds/c/d21b9e57c74ce82ac459e2ec8ce667db9b9da8b0 8], [https://git.kernel.org/torvalds/c/af9e4d5f2de2eabdc7145e077ba48b2a638465c6 9], [https://git.kernel.org/torvalds/c/628d47ce98d50860d4fc1eef250126dd50622a89 10], [https://git.kernel.org/torvalds/c/b237aded41cd68f378650209e8a10c04a25da258 11], [https://git.kernel.org/torvalds/c/37f9f5595c26d3cb644ca2fab83dc4c4db119f9f 12], [https://git.kernel.org/torvalds/c/baa355fd331424526e742d41d9b90d5f9d10f716 13], [https://git.kernel.org/torvalds/c/9a73f61bdb8acdc01bbaf72a3fe0a8854f2463ad 14], [https://git.kernel.org/torvalds/c/7751b2da6be0b59da0838a05153a646df1affbce 15], [https://git.kernel.org/torvalds/c/e2f0a0db95979a4aa951d883248da9d361507abf 16], [https://git.kernel.org/torvalds/c/c78c66d1ddfdbd2353f3fcfeba0268524537b096 17], [https://git.kernel.org/torvalds/c/83929372f629001568d43069a63376e13bfc497b 18], [https://git.kernel.org/torvalds/c/fc127da085c26beb89f83ad804cf73422c3b6855 19], [https://git.kernel.org/torvalds/c/65c453778aea374a46597f4d9826274d1eaf7338 20], [https://git.kernel.org/torvalds/c/5a6e75f8110c97e2a5488894d4e922187e6cb343 21], [https://git.kernel.org/torvalds/c/c01d5b300774d130a24d787825b01eb24e6e20cb 22], [https://git.kernel.org/torvalds/c/800d8c63b2e989c2e349632d1648119bf5862f01 23], [https://git.kernel.org/torvalds/c/657e3038c4e6fcd3cef41f2b01c655a685a7b8c7 24], [https://git.kernel.org/torvalds/c/b46e756f5e47031c67658ff036e5ffe27062fa43 25], [https://git.kernel.org/torvalds/c/988ddb710bb5be27f793b7e50455c769118a389f 26], [https://git.kernel.org/torvalds/c/4595ef88d136134a9470c955575640f5c96344ed 28], [https://git.kernel.org/torvalds/c/f3f0e1d2150b2b99da2cbdfaad000089efe9bf30 29], [https://git.kernel.org/torvalds/c/e496cf3d782135c1cca0d154d4b924517ff58de0 30], [https://git.kernel.org/torvalds/c/779750d20b93bb2e0c75dfe924f31b02f6a78bfa 31], [https://git.kernel.org/torvalds/c/1b5946a84d6eb096158e535bdb9bda06e7cdd941 32]

1.2. Support for eXpress Data Path

XDP or eXpress Data Path provides a high performance, programmable network data path in the Linux kernel. XDP provides bare metal packet processing at the lowest point in the software stack. Much of the huge speed gain comes from processing RX packet-pages directly out of drivers RX ring queue, before any allocations of meta-data structures like SKBs occurs. Its properties are:

Use cases include pre-stack processing like filtering to do DOS mitigation; forwarding and load balancing; batching techniques such as in Generic Receive Offload; flow sampling, monitoring; ULP processing (e.g. message delineation).

Recommended LWN article: [https://lwn.net/Articles/682538/ Early packet drop — and more — with BPF]

IO Visor page: [https://www.iovisor.org/technology/xdp https://www.iovisor.org/technology/xdp]

Prototype docs: [https://prototype-kernel.readthedocs.io/en/latest/networking/XDP/index.html prototype-kernel.readthedocs.io]

PDF: [https://github.com/iovisor/bpf-docs/blob/master/Express_Data_Path.pdf Express_Data_Path.pdf]

Code: [https://git.kernel.org/torvalds/c/22b3548861fb21ad79e0d3afeee123b0eb3912cc (merge)], [https://git.kernel.org/torvalds/c/59d3656d5bf504f771fc44fdbc7a9a8590795f22 commit 1], [https://git.kernel.org/torvalds/c/6a773a15a1e8874e5eccd2f29190c31085912c95 2], [https://git.kernel.org/torvalds/c/a7862b45849fe2f8610a2bec89235580f55d337f 3], [https://git.kernel.org/torvalds/c/d1fdd9138682e0f272beee0cb08b6328c5478b26 4], [https://git.kernel.org/torvalds/c/47a38e155037f417c5740e24ccae6482aedf4b68 5], [https://git.kernel.org/torvalds/c/86af8b4191d20bb17e868d3167f4cf52ca9331d0 6], [https://git.kernel.org/torvalds/c/d576acf0a22890cf3f8f7a9b035f1558077f6770 7], [https://git.kernel.org/torvalds/c/6ce96ca348a9e949f8c43f4d3e98db367d93cffd 8], [https://git.kernel.org/torvalds/c/224e92e02a769b8028ca2450443586af8b4f1715 9], [https://git.kernel.org/torvalds/c/9ecc2d86171adf23796133c89610987a14624875 10], [https://git.kernel.org/torvalds/c/4acf6c0b84c91243c705303cd9ff16421914150d 11], [https://git.kernel.org/torvalds/c/764cbccef8c9cb95e869ba2bb8371c42685c934a 12]

1.3. XFS reverse mapping

Reverse mapping allows XFS to track the owner of a specific block on disk precisely. It is implemented as a set of btrees (one per allocation group) that track the owners of allocated extents. Effectively it is a "used space tree" that is updated when the file system allocates or free extents. i.e. it is coherent with the free space btrees that are already maintained and never overlaps with them.

This reverse mapping infrastructure is the building block of several upcoming features - reflink, copy-on-write data, dedupe, online metadata and data scrubbing, highly accurate bad sector/data loss reporting to users, and significantly improved reconstruction of damaged and corrupted filesystems. There's a lot of new stuff coming along in the next couple of cycles, and it all builds in the rmap infrastructure. As such, it's a huge chunk of new code with new on-disk format features and internal infrastructure. It warns at mount time as an experimental feature and that it may eat data (as XFS does with all new on-disk features until they stabilise). XFS maintainers have not released userspace suport for it yet - userspace support currently requires download from Darrick's xfsprogs repo and build from source, so the access to this feature is really developer/tester only at this point. Initial userspace support will be released at the same time kernel with this code in it is released.

Code: [https://git.kernel.org/torvalds/c/0cbbc422d56668528f6efd1234fe908010284082 (merge)]

1.4. Stricter checking of memory copies with hardened usercopy

This is a security feature ported from [https://grsecurity.net/features.php#usercopy Grsecurity's PAX_USERCOPY]. It checks for obviously wrong memory regions when copying memory to/from the kernel (via copy_to_user() and copy_from_user() functions) by rejecting memory ranges that are larger than the specified heap object, span multiple separately allocates pages, are not on the process stack, or are part of the kernel text. This kills entire classes of heap overflow exploits and similar kernel memory exposures. Performance impact is negligible.

Recommended LWN article: [https://lwn.net/Articles/695991/ Hardened usercopy]

Code: [https://git.kernel.org/torvalds/c/7c15d9bb8231f998ae7dc0b72415f5215459f7fb commit 1], [https://git.kernel.org/torvalds/c/0f60a8efe4005ab5e65ce000724b04d4ca04a199 2], [https://git.kernel.org/torvalds/c/f5509cc18daa7f82bcc553be70df2117c8eedc16 3], [https://git.kernel.org/torvalds/c/5b710f34e194c6b7710f69fdb5d798fdf35b98c1 4], [https://git.kernel.org/torvalds/c/dfd45b6103c973bfcea2341d89e36faf947dbc33 5], [https://git.kernel.org/torvalds/c/faf5b63e294151d6ac24ca6906d6f221bd3496cd 6], [https://git.kernel.org/torvalds/c/73d35887e24da77e8d1321b2e92bd9b9128e2fc2 7], [https://git.kernel.org/torvalds/c/1d3c1324746fed0e34a5b94d3ed303e7521ed603 8], [https://git.kernel.org/torvalds/c/9d9208a15800f9f06f102f9aac1e8b323c3b8575 9], [https://git.kernel.org/torvalds/c/97433ea4fda62349bfa42089455593cbcb57e06c 10], [https://git.kernel.org/torvalds/c/04385fc5e8fffed84425d909a783c0f0c587d847 11], [https://git.kernel.org/torvalds/c/ed18adc1cdd00a5c55a20fbdaed4804660772281 12]

1.5. GCC plugin support

Like this previous one, this is a feature ported from [https://grsecurity.net/features.php#tabs-gcc Grsecurity]. It enables the use of [https://gcc.gnu.org/wiki/plugins GCC plugins], which are loadable compiler modules that can be used for runtime instrumentation and static analysis, allowing to analyse, change and add further code during compilation. Grsecurity uses these mechanisms to improve security. Two plugins are included in this release: sancov, a plugin used as a helper for the [https://kernelnewbies.org/Linux_4.6#head-efb0246a2466d8855fad5394360a41f06028bab5 kcov] feature; and the Cyclomatic complexity plugin, which calculates the [https://en.wikipedia.org/wiki/Cyclomatic_complexity cyclomatic complexity] of a function.

Recommended LWN article: [https://lwn.net/Articles/691102/ Kernel building with GCC plugins]

Code: [https://git.kernel.org/torvalds/c/24403874316a7180d367e51d7f7e25d5de1f78dd commit 1], [https://git.kernel.org/torvalds/c/6b90bd4ba40b38dc13c2782469c1c77e4ed79915 2], [https://git.kernel.org/torvalds/c/543c37cb165049c3be24a0d4733e67caa2b33eef 3], [https://git.kernel.org/torvalds/c/0dae776c6bf31e779c172753f6e2d6426eb42523 4]

1.6. virtio-vsocks for easier guest/host communication

This release adds virtio-vsock, which provides AF_VSOCK sockets that allow applications in the guest and host to communicate. This can be used to implement hypervisor services and guest agents (like qemu-guest-agent or SPICE vdagent). Unlike virtio-serial, virtio-vsock supports the POSIX Sockets API so existing networking applications require minimal modification. The Sockets API allows N:1 connections so multiple clients can connect to a server simultaneously. The device has an address assigned automatically so no configuration is required inside the guest.

Code: [https://git.kernel.org/torvalds/c/304ba62fd4e670c1a5784585da0fac9f7309ef6c commit], [https://git.kernel.org/torvalds/c/433fc58e6bf2c8bd97e57153ed28e64fd78207b8 commit], [https://git.kernel.org/torvalds/c/0ea9e1d3a9e3ef7d2a1462d3de6b95131dc7d872 commit], [https://git.kernel.org/torvalds/c/06a8fc78367d070720af960dcecec917d3ae5f3b commit]

1.7. Support IPv6 security labeling (CALIPSO, RFC 5570)

This release implements [https://tools.ietf.org/html/rfc5570 RFC 5570] - Common Architecture Label IPv6 Security Option (CALIPSO). Its goal is to set Multi-Level Secure (MLS) sensitivity labels on IPv6 packets using a hop-by-hop option. It is intended for use only within MLS networking environments that are both trusted and trustworthy. CALIPSO is very similar to its IPv4 cousin CIPSO and much of this feature is based on that code. To use CALIPSO you'll need some patches to netlabel-tools that are available on the 'working-calipso-v3' branch at: https://github.com/netlabel/netlabel_tools.

Code: [https://git.kernel.org/torvalds/c/96a8f7f88d4e540e6342ed313c52f6977e4ccc54 commit 1], [https://git.kernel.org/torvalds/c/8f18e675c3335b5f113dbabc4afbab6da41ff61f 2], [https://git.kernel.org/torvalds/c/cb72d38211eacda2dd90b09540542b6582da614e 3], [https://git.kernel.org/torvalds/c/a5e34490c3160e09814403d040765b0ae0003121 4], [https://git.kernel.org/torvalds/c/e1ce69df7e6e8cbdca78ae831ecf435b12b4c168 5], [https://git.kernel.org/torvalds/c/dc7de73f19962e824243985c046d6a2782d282fc 6], [https://git.kernel.org/torvalds/c/d7cce01504a0ccb95b5007d846560cfccbc1947f 7], [https://git.kernel.org/torvalds/c/e67ae213c72f72be50561c060ae17e92426651da 8], [https://git.kernel.org/torvalds/c/3faa8f982f958961fda68b8d63e682fe77a032d4 9], [https://git.kernel.org/torvalds/c/ceba1832b1b2da0149c51de62a847c00bca1677a 10], [https://git.kernel.org/torvalds/c/1f440c99d3207d684a3ac48d6e528af548b5c915 11], [https://git.kernel.org/torvalds/c/56ac42bc94b18d45b6c484edeac33be86bfb3efa 12], [https://git.kernel.org/torvalds/c/e1adea927080821ebfa7505bff752a4015955660 13], [https://git.kernel.org/torvalds/c/0868383b822e4d8ebde980c7aac973a6aa81a3ec 14], [https://git.kernel.org/torvalds/c/2917f57b6bc15cc6787496ee5f2fdf17f0e9b7d3 15], [https://git.kernel.org/torvalds/c/a04e71f631fa3d2fd2aa0404c11484739d1e9073 16], [https://git.kernel.org/torvalds/c/2e532b702834c07f614caf4489feb691e713232a 17], [https://git.kernel.org/torvalds/c/4fee5242bf41d9ad641d4c1b821e36eb7ba37fbf 18], [https://git.kernel.org/torvalds/c/3f09354ac84c6904787189d85fb306bf60f714b8 19]

1.8. Documentation moved to the reStructuredText format

In an attempt to modernize it, the kernel documentation will be converted to the [http://www.sphinx-doc.org Sphinx system], which uses [http://docutils.sourceforge.net/rst.html reStructuredText] as its markup language.

Documentation: [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/kernel-documentation.rst?id=17defc282fe6e6ac93edbad8873ce89ef86b2490 Documentation/kernel-documentation.rst]

Recommended LWN articles: [https://lwn.net/Articles/692704/ Kernel documentation with Sphinx, part 1: how we got here], [https://lwn.net/Articles/692705/ Kernel documentation with Sphinx, part 2: how it works]

Code: [https://git.kernel.org/torvalds/c/0f776dc377f6c87f4e4d4a5f63602f33fb93b31e (merge)]

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Cryptography

7. Tracing and perf tool

8. Virtualization

9. Security

10. Networking

11. Architectures

12. Drivers

12.1. Graphics

12.2. Storage

12.3. Staging

12.4. Networking

rtl8xxxu: Enable aggregation for rtl8723au [https://git.kernel.org/torvalds/c/91dcbb7175317da7caafc3b05b002addd42cdabd commit], [https://git.kernel.org/torvalds/c/82cce22acd8ec7c75087825f23c053a642e7b672 commit], [https://git.kernel.org/torvalds/c/fd83f12278262feccd012b62c30643bd6a6c2888 commit]

12.5. Audio

12.6. Tablets, touch screens, keyboards, mouses

12.7. TV tuners, webcams, video capturers

12.8. USB

12.9. Serial Peripheral Interface (SPI)

12.10. Watchdog

12.11. Serial

12.12. ACPI, EFI, cpufreq, thermal, Power Management

12.13. Real Time Clock (RTC)

12.14. Voltage, current regulators, power capping, power supply

12.15. Rapid I/O

12.16. Pin Controllers (pinctrl)

12.17. Memory Technology Devices (MTD)

12.18. Multi Media Card

12.19. Industrial I/O (iio)

12.20. Multi Function Devices (MFD)

12.21. Pulse-Width Modulation (PWM)

12.22. Inter-Integrated Circuit (I2C)

12.23. Hardware monitoring (hwmon)

12.24. General Purpose I/O (gpio)

12.25. Clocks

== Hardware Random Number Generator ==

12.26. PCI

12.27. Various

13. List of merges

14. Other news sites

KernelNewbies: Linux_4.8 (last edited 2016-12-30 15:15:34 by diegocalleja)