#pragma section-numbers on #pragma keywords Linux, kernel, operating system, changes, changelog, file system, Linus Torvalds, open source, device drivers #pragma description Summary of the changes and new features merged in the Linux kernel during the 4.1 development cycle Linux 4.1 [https://lkml.org/lkml/2015/6/22/8 has been released] on Sun, 21 Jun 2015 /!\ /!\ Warning /!\ /!\ This page will be completed (it will, really) . Meanwhile, you can read about Linux 4.1 in: * LWN merge window [http://lwn.net/Articles/640297/ part 1], [http://lwn.net/Articles/641016/ part 2], [http://lwn.net/Articles/642039/ part 3] = Prominent features = = Drivers and architectures = All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_4.1-DriversArch Linux_4.1-DriversArch] page = File systems = * F2FS * Add an optional rb-tree based extent cache, an improvement over the original extent info cache. It can be used with the "-o extent_cache" mount option [http://git.kernel.org/linus/1dcc336b02bff3d38f173feac55a2b6c25a5fb54 commit], [http://git.kernel.org/linus/8967215954a50947fbd9c2996232548bf6dd9062 commit] * Enable inline data by default [http://git.kernel.org/linus/75342797988a0f9ebec400a2dde8d4de581c4079 commit] * Support fs shutdown [http://git.kernel.org/linus/1abff93d01eddaab7ccdcf15f8cda4d91cbbcd9a commit] * HFS+ * Don't store special "osx" xattr prefix on-disk [http://git.kernel.org/linus/db579e76f06e78de011b2cb7e028740a82f5558c commit] = Block = = Cryptography = * algif: add AEAD support [http://git.kernel.org/linus/400c40cf78da00c16e561a3a253ca272455c42ef commit], [http://git.kernel.org/linus/44cac4fce9b820c37a8792df52a0e4ce33201949 commit] = Core (various) = * Allow to configure the kernel without multi-user support, under this option UID and GID are zero in any possible case and processes always have all capabilities. This is useful for embedded targets that don't need multiple users and want to save some space [http://git.kernel.org/linus/2813893f8b197a14f1e1ddb04d99bce46817c84a commit] * kbuild: add generic mergeconfig target, %.config [http://git.kernel.org/linus/63a91033d52e64a22e571fe84924c0b7f21c280d commit] * Users can change the maximum number of threads by writing to /proc/sys/kernel/threads-max [http://git.kernel.org/linus/16db3d3f1170fb0efca652c9378ce7c5f5cb4232 commit] * Remove execution domain support, a old feature which allowed to execute files compiled for other operating systems [http://git.kernel.org/linus/973f911f55a0e510dd6db8bbb29cd82ff138d3c0 commit] = Memory management = * Allow compaction of unevictable pages [http://git.kernel.org/linus/5bbe3547aa3ba5242366a322a28996872301b703 commit] * Contiguous memory allocator: Provides a userspace interface to trigger a CMA allocation and/or release the allocated memory [http://git.kernel.org/linus/26b02a1f9670862c51b3ff63a6128589866f5c71 commit], [http://git.kernel.org/linus/28b24c1fc8c22cabe5b8a16ffe6a61dfce51a1f2 commit], [http://git.kernel.org/linus/17e0db822b00cff96c1b662ac0dc0449cb70e0ec commit], [http://git.kernel.org/linus/8325330b026509127d4541e0f511c0c10648c2d5 commit] * Incorporate zero pages into transparent huge pages. This improves transparent hugepage collapse rates [http://git.kernel.org/linus/ca0984caa8235762dc4e22c1c47ae6719dcc4064 commit] * hugetlbfs: Add 'min_size=' moun option. This option takes the same value as the 'size' option. min_size can be specified without specifying size. If both are specified, min_size must be less that or equal to size else the mount will fail. If min_size is specified, then at mount time an attempt is made to reserve min_size pages. If the reservation fails, the mount fails. At umount time, the reserved pages are released [http://git.kernel.org/linus/7ca02d0ae586fe7df59632966a64f3f1a756ef05 commit], [http://git.kernel.org/linus/8c9b97033547834404a58ea88da7226ed5167726 commit] = Security = * Smack: Allow an unconfined label in bringup mode [http://git.kernel.org/linus/bf4b2fee99799780ea3dbb6d79d1909b3e32be13 commit] * Audit: * Fix a race that could truncate audit log reports after the comm field ([https://git.kernel.org/linus/5deeb5cece3f9b30c8129786726b9d02c412c8ca commit]). * SELinux: * The policy storage has been switched from the custom avtab hash table struct to a generic flex_array ([https://git.kernel.org/linus/ba39db6e0519aa8362dbda6523ceb69349a18dc3 commit]). The hash function used is now based on murmurhash3 which has a better distribution ([https://git.kernel.org/linus/33ebc1932a07efd8728975750409741940334489 commit]). The number of buckets in the hash table has been increased ([https://git.kernel.org/linus/cf7b6c0205f11cdb015384244c0b423b00e35c69 commit]). Those three commits should improve the performance of SELinux rules lookup in the in-kernel stored policy. * Some Netlink commands were not mentioned in the struct used by SELinux as this table was probably forgotten when they were introduced in the kernel (commits: [https://git.kernel.org/linus/5bdfbc1f19d047a182d2bab102c22bbf2a1ea244 1], [https://git.kernel.org/linus/387f989a60db00207c39b9fe9ef32c897356aaba 2], [https://git.kernel.org/linus/2b7834d3e1b828429faa5dc41a480919e52d3f31 3], [https://git.kernel.org/linus/5e6deebafb45fb271ae6939d48832e920b8fb74e 4], [https://git.kernel.org/linus/5b5800fad072133e4a9c2efbf735baaac83dec86 5], [https://git.kernel.org/linus/b0b59b0056acd6f157a04cc895f7e24692fb08aa 6], [https://git.kernel.org/linus/8d465bb777179c4bea731b828ec484088cc9fbc1 7], [https://git.kernel.org/linus/bd2cba07381a6dba60bc1c87ed8b37931d244da1 8]). A change has been included to make sure this won't happen without a compile time failure ([https://git.kernel.org/linus/cf890138087a6da2f56a642acb80476370b04332 commit]). * SMACK: * Assign smack_known_web as default smk_in label for kernel thread's socket ([https://git.kernel.org/linus/7412301b76bd53ee53b860f611fc3b5b1c2245b5 commit]). * Getting the Smack security context of keys: implements the LSM side part of the system call keyctl with the action code KEYCTL_GET_SECURITY ([https://git.kernel.org/linus/7fc5f36e980a8f4830efdae3858f6e64eee538b7 commit]). * Allow an unconfined label in bringup mode : ([https://git.kernel.org/linus/bf4b2fee99799780ea3dbb6d79d1909b3e32be13 commit]). * Non-exhaustive list of fixed CVEs: * CVE-2015-4178 ([https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4178 Mitre], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=820f9f147dcce2602eefd9b575bbbd9ea14f0953 commit]); * CVE-2015-4177 ([https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4177 Mitre], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=cd4a40174b71acd021877341684d8bb1dc8ea4ae commit]); * CVE-2015-4176 ([https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4176 Mitre], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e0c9c0afd2fc958ffa34b697972721d81df8a56f commit]); * CVE-2015-4001 ([https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4001 NVD], [http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4001 Mitre]), CVE-2015-4002 ([https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4002 NVD], [http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4002 Mitre]), CVE-2015-4003 ([https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4003 NVD], [http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4003 Mitre]), CVE-2015-4004 ([https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4004 NVD], [http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4004 Mitre]) : [https://lkml.org/lkml/2015/5/13/739 Announce on LKML by Jason A. Donenfeld], [http://seclists.org/oss-sec/2015/q2/446 Announce on oss-sec], [https://www.kernel.org/doc/readme/drivers-staging-ozwpan-README OZWPAN driver documentation], commits : [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d114b9fe78c8d6fc6e70808c2092aa307c36dc8e 1], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b1bb5b49373b61bf9d2c73a4d30058ba6f069e4c 2], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=04bf464a5dfd9ade0dda918e44366c2c61fce80b 3], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9a59029bc218b48eff8b5d4dde5662fd79d3e1a8 4]; * CVE-2015-3339 ([https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-3339 NVD], [http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3339 Mitre], [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8b01fc86b9f425899f8a3a8fc1c47d73c2c20543 commit]); * ? ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=51dfcb076d1e1ce7006aa272cb7c4514740c7e47 commit]); * Information leak ([http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=33cf7c90fe2f97afb1cadaa0cfb782cb9d1b9ee2 commit]). * New hardware supported: * Altus Metrum ChaosKey ([https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=66e3e591891da9899a8990792da080432531ffd4 commit]). = Tracing & perf = * Add new 'perf data' command to provide operations over data files [http://git.kernel.org/linus/2245bf1410d2d719f3bfce729b07ab83fe6142f7 commit] * Add a new call chain recording option "lbr" (--call-graph lbr) into the perf tool to get the call stack information from hardware [http://git.kernel.org/linus/384b60557b5522fcb99646f0eb6e7a344cdb94c6 commit], [http://git.kernel.org/linus/aad2b21c151273fa7abc419dac51a980eff1dd17 commit] * perf trace: Support --events foo:bar --no-syscalls [http://git.kernel.org/linus/726f3234dd125633438922a07a80f933f13daf82 commit], [http://git.kernel.org/linus/77c92582a52308868b6ef30a7e551eaceb0fc246 commit] * perf record: Support recording running/enabled time [http://git.kernel.org/linus/85c273d2b6569706762cf400079ca0699e007d81 commit] * perf annotate: Allow annotation for compressed kernel modules [http://git.kernel.org/linus/2c7da8c590ad719796f46c875a096eb45ef971c7 commit], [http://git.kernel.org/linus/80a32e5b498a7547073e5e4b2b804edc7219979d commit] * perf diff: Support for different binaries [http://git.kernel.org/linus/94ba462d69efeba2f97111321a9ba1aa8141da57 commit] * perf diff: Add kallsyms option [http://git.kernel.org/linus/6b1f342354d45c651cabd2ae0f61f55846f33e10 commit] * Support using -f to override perf.data file ownership in perf evlist [http://git.kernel.org/linus/9e3b6ec17374299516d83c2e36135b958a895aa3 commit] and perf inject [http://git.kernel.org/linus/ccaa474c8a0983d26ecb3eac755672b546b997c3 commit] * perf kmem: Allow --verbose option [http://git.kernel.org/linus/bd72a33ebae8b4d37e3d2a3f0f3f3333ac9654dd commit] * perf kmem: perf kmem records and analyze kernel memory allocation only for SLAB objects. A new option has been added, --page, implements a simple page allocator analyzer using kmem:mm_page_alloc and kmem:mm_page_free events. The SLAB analysis is available in the --slab option [http://git.kernel.org/linus/0d68bc92c48167130b61b449f08be27dc862dba2 commit] * Support using -f to override perf.data file ownership in perf kmem [http://git.kernel.org/linus/d1eeb77c1811fd178442ccb8f58004a19ec40dd3 commit], perf kvm [http://git.kernel.org/linus/8cc5ec1f754355ed788838390e86389c9ffb7590 commit], perf lock [http://git.kernel.org/linus/c4ac732a0377d1544a8385393a9877b693ff0652 commit], perf mem [http://git.kernel.org/linus/62a1a63a77451dee8fd318a5106ca108d6a8ebcb commit], perf script [http://git.kernel.org/linus/06af0f2c919d7c8f05efebe0d96a6f22297aafd4 commit], perf timechart [http://git.kernel.org/linus/44f7e432e3dc8a13f5661e8b722f53645df083d1 commit], perf trace [http://git.kernel.org/linus/e366a6d8949f3cfab01906b42c591098d59f3f35 commit] * perf probe: Support multiple probes on different binaries [http://git.kernel.org/linus/7afb3fab390871b1d20b1dbb94e03b8a3861cb0d commit] * perf trace: Allow mixing with other events [http://git.kernel.org/linus/14a052df1cfa563093f20847d52caad4be5d2adc commit] * perf trace: Dump stack on segfaults [http://git.kernel.org/linus/4d08cb80ef5199258c01a3444fd29d94a36a0343 commit] * perf trace: Introduce --filter-pids [http://git.kernel.org/linus/f078c3852c7367b78552be432bc24ca93ebbd4cf commit] * perf buildid-cache: Add --purge FILE to remove all caches of FILE [http://git.kernel.org/linus/8d8c8e4cb3014fcc51f0e127b4316043306f5bb0 commit] = Virtualization = * Add virtio-input driver, which is basically an "evdev-events-over-virtio" driver [http://git.kernel.org/linus/271c865161c57cfabca45b93eaa712b19da365bc commit] = Networking = * 6lowpan: Add generic next header compression layer interface [http://git.kernel.org/linus/92aa7c65d295f3cbb96904afe335f683e55584b8 commit], add udp compression via nhc layer [http://git.kernel.org/linus/cc6ed2684751b0a1074b37c080983b6ce737ed22 commit], add other known rfc6282 compressions [http://git.kernel.org/linus/ff0fcc2987b42857d233e8a72c7476fb1e520110 commit] * Extends the "classic" BPF programmable tc classifier by extending its scope also to native eBPF code, thus allowing userspace to implement own custom, 'safe' C like classifiers that can then be compiled with the LLVM eBPF backend to an eBPF elf file and loaded into the kernel via iproute2's tc, and be JITed in the kernel [http://git.kernel.org/linus/e2e9b6541dd4b31848079da80fe2253daaafb549 commit], [http://git.kernel.org/linus/a8cb5f556b567974d75ea29c15181c445c541b1f commit] * bpf: allow BPF programs access 'protocol' and 'vlan_tci' fields [http://git.kernel.org/linus/c24973957975403521ca76a776c2dfd12fbe9add commit], and skb fields [http://git.kernel.org/linus/9bac3d6d548e5cc925570b263f35b70a00a00ffd commit] * bonding: Implement port churn-machine (802.3ad standard 43.4.17) [http://git.kernel.org/linus/14c9551a32eba086c9f20c9d6a8e378481f15333 commit] * bridge: Extend Proxy ARP design to allow optional set of rules that are needed to meet the IEEE 802.11 and Hotspot 2.0 requirements for ProxyARP [http://git.kernel.org/linus/842a9ae08a25671db3d4f689eed68b4d64be15b5 commit] * ipv4: Create probe timer for tcp PMTU as per RFC4821. Default is 10 minutes, it can be changed in sysctl tcp_probe_interval [http://git.kernel.org/linus/05cbc0db03e82128f2e7e353d4194dd24a1627fe commit] * ipv4: Raise tcp PMTU probe mss base size from 512 to 1024 bytes [http://git.kernel.org/linus/dcd8fb8533ceb493146ce030d15f7965b82d0c27 commit] * ipv6: expose RFC4191 route preference via rtnetlink [http://git.kernel.org/linus/c78ba6d64c78634a875d1e316676667cabfea256 commit] * ipv6: generation of stable privacy addresses for link-local and autoconf as specified in RFC7217 [http://git.kernel.org/linus/622c81d57b392cc9be836670eb464a4dfaa9adfe commit] * ipvs: allow rescheduling of new connections when port reuse is detected. Currently, when TCP/SCTP port reusing happens, IPVS will find the old entry and use it for the new one, behaving like a forced persistence. A new sysctl has been introduced, conn_reuse_mode, that allows controlling how to proceed when port reuse is detected [http://git.kernel.org/linus/d752c364571743d696c2a54a449ce77550c35ac5 commit] * multicast: Extend "ip address" command with option "autojoin" to enable multicast group join/leave on [http://git.kernel.org/linus/93a714d6b53d87872e552dbb273544bdeaaf6e12 commit] * 9p: add a privport option for RDMA transport. [http://git.kernel.org/linus/f569d3ef8254d4b3b8daa4f131f9397d48bf296c commit] * dcb: Add IEEE QCN attribute, as specified in 802.1Qau spec, to the DCB netlink layer [http://git.kernel.org/linus/c93682477bd861744589215515a63b81fdbd8948 commit] * Add tx_maxrate attribute to the tx queue sysfs entry allowing for max-rate limiting for the queue [http://git.kernel.org/linus/822b3b2ebfff8e9b3d006086c527738a7ca00cd0 commit] * Add real socket cookies, instead of using kernel socket addresses as cookies [http://git.kernel.org/linus/33cf7c90fe2f97afb1cadaa0cfb782cb9d1b9ee2 commit] * Allow network devices to specify port names and export the name via sysfs [http://git.kernel.org/linus/db24a9044ee191c397dcd1c6574f56d67d7c8df5 commit] * sockets: add support for async operations [http://git.kernel.org/linus/0345f93138b2224e0d7ce91fcffdb3dd23f364d7 commit] * netfilter * Add support for arptables extensions from nft_compat [http://git.kernel.org/linus/5f15893943bfdc804e8703c5aa2c8dd8bf7ddf3f commit] * nf_tables: add set extensions infrastructure for maintaining variable sized and optional per element data [http://git.kernel.org/linus/3ac4c07a24007f0f45d2082b745508768a8e21cf commit] * nf_tables: implement set transaction support [http://git.kernel.org/linus/cc02e457bb86f7b6ffee3651bab22d104b60effb commit] * nf_tables: add set element timeout support [http://git.kernel.org/linus/761da2935d6e18d178582dbdf315a3a458555505 commit], [http://git.kernel.org/linus/c3e1b005ed1cc068fc9d454a6e745830d55d251d commit] * nft_hash: add support for timeouts [http://git.kernel.org/linus/9d0982927e79049675cb6c6c04a0ebb3dad5a434 commit] * nf_tables: add support for dynamic set updates [http://git.kernel.org/linus/22fe54d5fefcfa98c58cc2f4607dd26d9648b3f5 commit] * nf_tables: support optional userdata for set elements [http://git.kernel.org/linus/68e942e88add0ac8576fc8397e86495edf3dcea7 commit] * nf_tables: Support instantiating stateful expressions based on a template that are associated with dynamically created set entries. The expressions are evaluated when adding or updating the set element. This allows to maintain per flow state using the existing set infrastructure and expression types, with arbitrary definitions of a flow [http://git.kernel.org/linus/3e135cd499bfbec15684fe9c756162d58df4dc77 commit] * Wireless * Add API to change the indoor regulatory setting [http://git.kernel.org/linus/05050753602626ed4c46271c689929b625f409e7 commit] * add VHT support for IBSS [http://git.kernel.org/linus/ffc1199122d83d60ad99f9c55df32feb650b7bff commit] * Multiprotocol Label Switching (mlps) * Add a sysctl to control the number of entries in the platform label table [http://git.kernel.org/linus/7720c01f3f590116882e251f13c7e1d5602f8643 commit] * Basic routing support for forwarding the mpls packets [http://git.kernel.org/linus/0189197f441602acdca3f97750d392a895b778fd commit], [http://git.kernel.org/linus/a2519929aba78e8cec7955d2c2a0c1e230d1f6e6 commit], [http://git.kernel.org/linus/966bae3349da22bb6286f6f3874c279177b8633f commit], [http://git.kernel.org/linus/8de147dc8e2adea82b8a1a2a08fcc983330f6770 commit], [http://git.kernel.org/linus/03c0566542f4c7a45ce3193f27cbf5700b506c18 commit] * Per-device enabling of packet input [http://git.kernel.org/linus/37bde79979c3862c79294c62ddcef7efc477e4bf commit] * Bluetooth * Include a Add/Remove Advertising API [http://git.kernel.org/linus/203fea0178d7e165dbe834d1bdd9d243018fd5bf commit], [http://git.kernel.org/linus/841a6664f213f76a9bc1bfd07a466d3dbe281a88 commit], [http://git.kernel.org/linus/495099962138732c28449d07f3b1988836659851 commit], [http://git.kernel.org/linus/912098a6308e37208b8dcc46c57c66d0778a854b commit], [http://git.kernel.org/linus/4117ed70a55128273f1b6d00c7725e4c8a5c0031 commit], [http://git.kernel.org/linus/24b4f38fc9ebf93af223c67169a946d6baf9db61 commit], [http://git.kernel.org/linus/da929335f27d955172539bf56bed1ac9ff9b8d45 commit], [http://git.kernel.org/linus/4453b006538d02ada8294a195bb2dc2ada498436 commit] * Add local SSP OOB data to OOB ext data mgmt command [http://git.kernel.org/linus/40f66c05c360777e847033ddbe076d88123719d1 commit] * Add simple version of Read Advertising Features command [http://git.kernel.org/linus/d3d5305bfd1cb48c8f44207abb567276a1e09cc7 commit] * Add simple version of Read Local OOB Extended Data command [http://git.kernel.org/linus/4f0f155ceaf7e1b59d210a8afb24d4ea63ce13cc commit] * Add support for AES-CMAC hash for security manager device [http://git.kernel.org/linus/6e2dc6d1133f5f8bfd028ba7d1c3fb0b3fa717e9 commit] * Add support for Local OOB Extended Data Update events [http://git.kernel.org/linus/72000df2c01d6927319ad7e3f43460f6d0227de5 commit] * Add simultaneous dual mode scan [http://git.kernel.org/linus/07d2334ae747772fc4426077340aa3efe499f50b commit] * Add support for extended index management command [http://git.kernel.org/linus/96f1474af040a4ec267efe141cbf264891e67e5a commit], [http://git.kernel.org/linus/ced85549c3a769dfb9d084bb8d6d9ca8075f8728 commit] * Add support for trust verification of management commands [http://git.kernel.org/linus/c927a10487477eeed0441e5c88147700e69e5db9 commit] * Add support for untrusted access to management commands [http://git.kernel.org/linus/c91041dc4efff71f29f1dd4c9a4a5e80b841395c commit] * Introduce trusted flag for management control sockets [http://git.kernel.org/linus/50ebc055fa758c731e6e1ce174608327aab07aec commit] * Open management interface for untrusted users [http://git.kernel.org/linus/1195fbb8d03e5a6d7e7e49a73592caeb113a0f70 commit] * Support the "connectable mode" adv flag [http://git.kernel.org/linus/e7a685d316e7d4b64cd3b2811687b0270d590386 commit], support the "discoverable" adv flag [http://git.kernel.org/linus/b44133ff03be30b55f23036e62f403a3f7784fce commit], support the "limited-discoverable" adv flag [http://git.kernel.org/linus/807ec772bf484a8e93bc9a2a681e49cb8f2c4d69 commit], support the "managed-flags" adv flag [http://git.kernel.org/linus/67e0c0cd8f5afea17689f7688041e9d215df6875 commit], support the "tx-power" adv flag [http://git.kernel.org/linus/5507e358112af307c1c8595a04a0ef172d197f3c commit] = List of merges = = Other news sites =