diff options
Diffstat (limited to 'lib')
103 files changed, 254 insertions, 130 deletions
| diff --git a/lib/842/842.h b/lib/842/842.h index e0a122bc1cdb..7b1f581a2907 100644 --- a/lib/842/842.h +++ b/lib/842/842.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef __842_H__  #define __842_H__ diff --git a/lib/842/842_debugfs.h b/lib/842/842_debugfs.h index e7f3bffaf255..277e403e8701 100644 --- a/lib/842/842_debugfs.h +++ b/lib/842/842_debugfs.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef __842_DEBUGFS_H__  #define __842_DEBUGFS_H__ diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index b19c491cbc4e..dfdad67d8f6c 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -219,7 +219,8 @@ config FRAME_WARN  	range 0 8192  	default 0 if KASAN  	default 2048 if GCC_PLUGIN_LATENT_ENTROPY -	default 1024 if !64BIT +	default 1280 if (!64BIT && PARISC) +	default 1024 if (!64BIT && !PARISC)  	default 2048 if 64BIT  	help  	  Tell gcc to warn at build time for stack frames larger than this. @@ -1091,8 +1092,8 @@ config PROVE_LOCKING  	select DEBUG_MUTEXES  	select DEBUG_RT_MUTEXES if RT_MUTEXES  	select DEBUG_LOCK_ALLOC -	select LOCKDEP_CROSSRELEASE -	select LOCKDEP_COMPLETIONS +	select LOCKDEP_CROSSRELEASE if BROKEN +	select LOCKDEP_COMPLETIONS if BROKEN  	select TRACE_IRQFLAGS  	default n  	help @@ -1589,6 +1590,54 @@ config LATENCYTOP  source kernel/trace/Kconfig +config PROVIDE_OHCI1394_DMA_INIT +	bool "Remote debugging over FireWire early on boot" +	depends on PCI && X86 +	help +	  If you want to debug problems which hang or crash the kernel early +	  on boot and the crashing machine has a FireWire port, you can use +	  this feature to remotely access the memory of the crashed machine +	  over FireWire. This employs remote DMA as part of the OHCI1394 +	  specification which is now the standard for FireWire controllers. + +	  With remote DMA, you can monitor the printk buffer remotely using +	  firescope and access all memory below 4GB using fireproxy from gdb. +	  Even controlling a kernel debugger is possible using remote DMA. + +	  Usage: + +	  If ohci1394_dma=early is used as boot parameter, it will initialize +	  all OHCI1394 controllers which are found in the PCI config space. + +	  As all changes to the FireWire bus such as enabling and disabling +	  devices cause a bus reset and thereby disable remote DMA for all +	  devices, be sure to have the cable plugged and FireWire enabled on +	  the debugging host before booting the debug target for debugging. + +	  This code (~1k) is freed after boot. By then, the firewire stack +	  in charge of the OHCI-1394 controllers should be used instead. + +	  See Documentation/debugging-via-ohci1394.txt for more information. + +config DMA_API_DEBUG +	bool "Enable debugging of DMA-API usage" +	depends on HAVE_DMA_API_DEBUG +	help +	  Enable this option to debug the use of the DMA API by device drivers. +	  With this option you will be able to detect common bugs in device +	  drivers like double-freeing of DMA mappings or freeing mappings that +	  were never allocated. + +	  This also attempts to catch cases where a page owned by DMA is +	  accessed by the cpu in a way that could cause data corruption.  For +	  example, this enables cow_user_page() to check that the source page is +	  not undergoing DMA. + +	  This option causes a performance degradation.  Use only if you want to +	  debug device drivers and dma interactions. + +	  If unsure, say N. +  menu "Runtime Testing"  config LKDTM @@ -1748,56 +1797,6 @@ config TEST_PARMAN  	  If unsure, say N. -endmenu # runtime tests - -config PROVIDE_OHCI1394_DMA_INIT -	bool "Remote debugging over FireWire early on boot" -	depends on PCI && X86 -	help -	  If you want to debug problems which hang or crash the kernel early -	  on boot and the crashing machine has a FireWire port, you can use -	  this feature to remotely access the memory of the crashed machine -	  over FireWire. This employs remote DMA as part of the OHCI1394 -	  specification which is now the standard for FireWire controllers. - -	  With remote DMA, you can monitor the printk buffer remotely using -	  firescope and access all memory below 4GB using fireproxy from gdb. -	  Even controlling a kernel debugger is possible using remote DMA. - -	  Usage: - -	  If ohci1394_dma=early is used as boot parameter, it will initialize -	  all OHCI1394 controllers which are found in the PCI config space. - -	  As all changes to the FireWire bus such as enabling and disabling -	  devices cause a bus reset and thereby disable remote DMA for all -	  devices, be sure to have the cable plugged and FireWire enabled on -	  the debugging host before booting the debug target for debugging. - -	  This code (~1k) is freed after boot. By then, the firewire stack -	  in charge of the OHCI-1394 controllers should be used instead. - -	  See Documentation/debugging-via-ohci1394.txt for more information. - -config DMA_API_DEBUG -	bool "Enable debugging of DMA-API usage" -	depends on HAVE_DMA_API_DEBUG -	help -	  Enable this option to debug the use of the DMA API by device drivers. -	  With this option you will be able to detect common bugs in device -	  drivers like double-freeing of DMA mappings or freeing mappings that -	  were never allocated. - -	  This also attempts to catch cases where a page owned by DMA is -	  accessed by the cpu in a way that could cause data corruption.  For -	  example, this enables cow_user_page() to check that the source page is -	  not undergoing DMA. - -	  This option causes a performance degradation.  Use only if you want to -	  debug device drivers and dma interactions. - -	  If unsure, say N. -  config TEST_LKM  	tristate "Test module loading with 'hello world' module"  	default n @@ -1872,18 +1871,6 @@ config TEST_UDELAY  	  If unsure, say N. -config MEMTEST -	bool "Memtest" -	depends on HAVE_MEMBLOCK -	---help--- -	  This option adds a kernel parameter 'memtest', which allows memtest -	  to be set. -	        memtest=0, mean disabled; -- default -	        memtest=1, mean do 1 test pattern; -	        ... -	        memtest=17, mean do 17 test patterns. -	  If you are unsure how to answer this question, answer N. -  config TEST_STATIC_KEYS  	tristate "Test static keys"  	default n @@ -1893,16 +1880,6 @@ config TEST_STATIC_KEYS  	  If unsure, say N. -config BUG_ON_DATA_CORRUPTION -	bool "Trigger a BUG when data corruption is detected" -	select DEBUG_LIST -	help -	  Select this option if the kernel should BUG when it encounters -	  data corruption in kernel memory structures when they get checked -	  for validity. - -	  If unsure, say N. -  config TEST_KMOD  	tristate "kmod stress tester"  	default n @@ -1940,6 +1917,29 @@ config TEST_DEBUG_VIRTUAL  	  If unsure, say N. +endmenu # runtime tests + +config MEMTEST +	bool "Memtest" +	depends on HAVE_MEMBLOCK +	---help--- +	  This option adds a kernel parameter 'memtest', which allows memtest +	  to be set. +	        memtest=0, mean disabled; -- default +	        memtest=1, mean do 1 test pattern; +	        ... +	        memtest=17, mean do 17 test patterns. +	  If you are unsure how to answer this question, answer N. + +config BUG_ON_DATA_CORRUPTION +	bool "Trigger a BUG when data corruption is detected" +	select DEBUG_LIST +	help +	  Select this option if the kernel should BUG when it encounters +	  data corruption in kernel memory structures when they get checked +	  for validity. + +	  If unsure, say N.  source "samples/Kconfig" diff --git a/lib/Makefile b/lib/Makefile index dafa79613fb4..b8f2c16fccaa 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  #  # Makefile for some libs needed in the kernel.  # diff --git a/lib/argv_split.c b/lib/argv_split.c index e927ed0e18a8..5c35752a9414 100644 --- a/lib/argv_split.c +++ b/lib/argv_split.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Helper function for splitting a string into an argv-like array.   */ diff --git a/lib/asn1_decoder.c b/lib/asn1_decoder.c index 0bd8a611eb83..fef5d2e114be 100644 --- a/lib/asn1_decoder.c +++ b/lib/asn1_decoder.c @@ -284,6 +284,9 @@ next_op:  				if (unlikely(len > datalen - dp))  					goto data_overrun_error;  			} +		} else { +			if (unlikely(len > datalen - dp)) +				goto data_overrun_error;  		}  		if (flags & FLAG_CONS) { diff --git a/lib/assoc_array.c b/lib/assoc_array.c index 155c55d8db5f..4e53be8bc590 100644 --- a/lib/assoc_array.c +++ b/lib/assoc_array.c @@ -598,21 +598,31 @@ static bool assoc_array_insert_into_terminal_node(struct assoc_array_edit *edit,  		if ((edit->segment_cache[ASSOC_ARRAY_FAN_OUT] ^ base_seg) == 0)  			goto all_leaves_cluster_together; -		/* Otherwise we can just insert a new node ahead of the old -		 * one. +		/* Otherwise all the old leaves cluster in the same slot, but +		 * the new leaf wants to go into a different slot - so we +		 * create a new node (n0) to hold the new leaf and a pointer to +		 * a new node (n1) holding all the old leaves. +		 * +		 * This can be done by falling through to the node splitting +		 * path.  		 */ -		goto present_leaves_cluster_but_not_new_leaf; +		pr_devel("present leaves cluster but not new leaf\n");  	}  split_node:  	pr_devel("split node\n"); -	/* We need to split the current node; we know that the node doesn't -	 * simply contain a full set of leaves that cluster together (it -	 * contains meta pointers and/or non-clustering leaves). +	/* We need to split the current node.  The node must contain anything +	 * from a single leaf (in the one leaf case, this leaf will cluster +	 * with the new leaf) and the rest meta-pointers, to all leaves, some +	 * of which may cluster. +	 * +	 * It won't contain the case in which all the current leaves plus the +	 * new leaves want to cluster in the same slot.  	 *  	 * We need to expel at least two leaves out of a set consisting of the -	 * leaves in the node and the new leaf. +	 * leaves in the node and the new leaf.  The current meta pointers can +	 * just be copied as they shouldn't cluster with any of the leaves.  	 *  	 * We need a new node (n0) to replace the current one and a new node to  	 * take the expelled nodes (n1). @@ -717,33 +727,6 @@ found_slot_for_multiple_occupancy:  	pr_devel("<--%s() = ok [split node]\n", __func__);  	return true; -present_leaves_cluster_but_not_new_leaf: -	/* All the old leaves cluster in the same slot, but the new leaf wants -	 * to go into a different slot, so we create a new node to hold the new -	 * leaf and a pointer to a new node holding all the old leaves. -	 */ -	pr_devel("present leaves cluster but not new leaf\n"); - -	new_n0->back_pointer = node->back_pointer; -	new_n0->parent_slot = node->parent_slot; -	new_n0->nr_leaves_on_branch = node->nr_leaves_on_branch; -	new_n1->back_pointer = assoc_array_node_to_ptr(new_n0); -	new_n1->parent_slot = edit->segment_cache[0]; -	new_n1->nr_leaves_on_branch = node->nr_leaves_on_branch; -	edit->adjust_count_on = new_n0; - -	for (i = 0; i < ASSOC_ARRAY_FAN_OUT; i++) -		new_n1->slots[i] = node->slots[i]; - -	new_n0->slots[edit->segment_cache[0]] = assoc_array_node_to_ptr(new_n0); -	edit->leaf_p = &new_n0->slots[edit->segment_cache[ASSOC_ARRAY_FAN_OUT]]; - -	edit->set[0].ptr = &assoc_array_ptr_to_node(node->back_pointer)->slots[node->parent_slot]; -	edit->set[0].to = assoc_array_node_to_ptr(new_n0); -	edit->excised_meta[0] = assoc_array_node_to_ptr(node); -	pr_devel("<--%s() = ok [insert node before]\n", __func__); -	return true; -  all_leaves_cluster_together:  	/* All the leaves, new and old, want to cluster together in this node  	 * in the same slot, so we have to replace this node with a shortcut to diff --git a/lib/audit.c b/lib/audit.c index b8fb5ee81e26..5004bff928a7 100644 --- a/lib/audit.c +++ b/lib/audit.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/init.h>  #include <linux/types.h>  #include <linux/audit.h> diff --git a/lib/bcd.c b/lib/bcd.c index 40d304efe272..7e4750b6e801 100644 --- a/lib/bcd.c +++ b/lib/bcd.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/bcd.h>  #include <linux/export.h> diff --git a/lib/bug.c b/lib/bug.c index a6a1137d06db..1e094408c893 100644 --- a/lib/bug.c +++ b/lib/bug.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*    Generic support for BUG() diff --git a/lib/bust_spinlocks.c b/lib/bust_spinlocks.c index f8e0e5367398..ab719495e2cb 100644 --- a/lib/bust_spinlocks.c +++ b/lib/bust_spinlocks.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * lib/bust_spinlocks.c   * diff --git a/lib/check_signature.c b/lib/check_signature.c index 6b49797980c4..43a7301da7ab 100644 --- a/lib/check_signature.c +++ b/lib/check_signature.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/io.h>  #include <linux/export.h> diff --git a/lib/clz_tab.c b/lib/clz_tab.c index 7287b4a991a7..b6118d09f244 100644 --- a/lib/clz_tab.c +++ b/lib/clz_tab.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  const unsigned char __clz_tab[] = {  	0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,  	    5, 5, 5, 5, 5, 5, 5, 5, diff --git a/lib/compat_audit.c b/lib/compat_audit.c index 873f75b640ab..77eabad69b4a 100644 --- a/lib/compat_audit.c +++ b/lib/compat_audit.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/init.h>  #include <linux/types.h>  #include <asm/unistd32.h> diff --git a/lib/cpumask.c b/lib/cpumask.c index 8b1a1bd77539..35fe142ebb5e 100644 --- a/lib/cpumask.c +++ b/lib/cpumask.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/slab.h>  #include <linux/kernel.h>  #include <linux/bitops.h> diff --git a/lib/crc32defs.h b/lib/crc32defs.h index 64cba2c3c700..cb275a28a750 100644 --- a/lib/crc32defs.h +++ b/lib/crc32defs.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /*   * There are multiple 16-bit CRC polynomials in common use, but this is   * *the* standard CRC-32 polynomial, first popularized by Ethernet. diff --git a/lib/ctype.c b/lib/ctype.c index c646df91a2f7..c819fe269eb2 100644 --- a/lib/ctype.c +++ b/lib/ctype.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/lib/ctype.c   * diff --git a/lib/debug_info.c b/lib/debug_info.c index 2edbe27517ed..36daf753293c 100644 --- a/lib/debug_info.c +++ b/lib/debug_info.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * This file exists solely to ensure debug information for some core   * data structures is included in the final image even for diff --git a/lib/dec_and_lock.c b/lib/dec_and_lock.c index e26278576b31..347fa7ac2e8a 100644 --- a/lib/dec_and_lock.c +++ b/lib/dec_and_lock.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/spinlock.h>  #include <linux/atomic.h> diff --git a/lib/decompress.c b/lib/decompress.c index 62696dff5730..857ab1af1ef3 100644 --- a/lib/decompress.c +++ b/lib/decompress.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * decompress.c   * diff --git a/lib/decompress_inflate.c b/lib/decompress_inflate.c index 555c06bf20da..63b4b7eee138 100644 --- a/lib/decompress_inflate.c +++ b/lib/decompress_inflate.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #ifdef STATIC  #define PREBOOT  /* Pre-boot environment: included */ diff --git a/lib/devres.c b/lib/devres.c index 78eca713b1d9..5f2aedd58bc5 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/err.h>  #include <linux/pci.h>  #include <linux/io.h> diff --git a/lib/digsig.c b/lib/digsig.c index 03d7c63837ae..6ba6fcd92dd1 100644 --- a/lib/digsig.c +++ b/lib/digsig.c @@ -87,6 +87,12 @@ static int digsig_verify_rsa(struct key *key,  	down_read(&key->sem);  	ukp = user_key_payload_locked(key); +	if (!ukp) { +		/* key was revoked before we acquired its semaphore */ +		err = -EKEYREVOKED; +		goto err1; +	} +  	if (ukp->datalen < sizeof(*pkh))  		goto err1; diff --git a/lib/div64.c b/lib/div64.c index 7f345259c32f..58e2a404097e 100644 --- a/lib/div64.c +++ b/lib/div64.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Copyright (C) 2003 Bernardo Innocenti <[email protected]>   * diff --git a/lib/dma-noop.c b/lib/dma-noop.c index acc4190e2731..a10185b0c2d4 100644 --- a/lib/dma-noop.c +++ b/lib/dma-noop.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *	lib/dma-noop.c   * diff --git a/lib/dma-virt.c b/lib/dma-virt.c index 5c4f11329721..8e61a02ef9ca 100644 --- a/lib/dma-virt.c +++ b/lib/dma-virt.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *	lib/dma-virt.c   * diff --git a/lib/dump_stack.c b/lib/dump_stack.c index 625375e7f11f..c5edbedd364d 100644 --- a/lib/dump_stack.c +++ b/lib/dump_stack.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Provide a default dump_stack() function for architectures   * which don't implement their own. diff --git a/lib/dynamic_queue_limits.c b/lib/dynamic_queue_limits.c index f346715e2255..6a406fafb5d6 100644 --- a/lib/dynamic_queue_limits.c +++ b/lib/dynamic_queue_limits.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Dynamic byte queue limits.  See include/linux/dynamic_queue_limits.h   * diff --git a/lib/errseq.c b/lib/errseq.c index 7b900c2a277a..79cc66897db4 100644 --- a/lib/errseq.c +++ b/lib/errseq.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/err.h>  #include <linux/bug.h>  #include <linux/atomic.h> diff --git a/lib/flex_proportions.c b/lib/flex_proportions.c index 2cc1f94e03a1..7852bfff50b1 100644 --- a/lib/flex_proportions.c +++ b/lib/flex_proportions.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  Floating proportions with flexible aging period   * diff --git a/lib/fonts/Makefile b/lib/fonts/Makefile index e04d010cfbf5..d56f02dea83a 100644 --- a/lib/fonts/Makefile +++ b/lib/fonts/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  # Font handling  font-objs := fonts.o diff --git a/lib/fonts/font_10x18.c b/lib/fonts/font_10x18.c index 6be72bb218ee..532f0ff89a96 100644 --- a/lib/fonts/font_10x18.c +++ b/lib/fonts/font_10x18.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /********************************   * adapted from font_sun12x22.c *   * by Jurriaan Kalkman 06-2005  * diff --git a/lib/fonts/font_6x10.c b/lib/fonts/font_6x10.c index b20620904d31..09b2cc03435b 100644 --- a/lib/fonts/font_6x10.c +++ b/lib/fonts/font_6x10.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/font.h>  static const unsigned char fontdata_6x10[] = { diff --git a/lib/fonts/font_6x11.c b/lib/fonts/font_6x11.c index 46e86e67aa6a..d7136c33f1f0 100644 --- a/lib/fonts/font_6x11.c +++ b/lib/fonts/font_6x11.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**********************************************/  /*                                            */  /*       Font file generated by rthelen       */ diff --git a/lib/fonts/font_7x14.c b/lib/fonts/font_7x14.c index 3b7dbf9c060b..9ae5b62c8a0d 100644 --- a/lib/fonts/font_7x14.c +++ b/lib/fonts/font_7x14.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**************************************/  /* this file adapted from font_8x16.c */  /* by Jurriaan Kalkman 05-2005        */ diff --git a/lib/fonts/font_8x16.c b/lib/fonts/font_8x16.c index 00a0c67a5c7d..34292cdfaa23 100644 --- a/lib/fonts/font_8x16.c +++ b/lib/fonts/font_8x16.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**********************************************/  /*                                            */  /*       Font file generated by cpi2fnt       */ diff --git a/lib/fonts/font_8x8.c b/lib/fonts/font_8x8.c index 9f56efe2cee7..751becf3c521 100644 --- a/lib/fonts/font_8x8.c +++ b/lib/fonts/font_8x8.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**********************************************/  /*                                            */  /*       Font file generated by cpi2fnt       */ diff --git a/lib/fonts/font_acorn_8x8.c b/lib/fonts/font_acorn_8x8.c index 639e31ae1100..0ff0e85d4481 100644 --- a/lib/fonts/font_acorn_8x8.c +++ b/lib/fonts/font_acorn_8x8.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /* Acorn-like font definition, with PC graphics characters */  #include <linux/font.h> diff --git a/lib/fonts/font_pearl_8x8.c b/lib/fonts/font_pearl_8x8.c index dc6ad539ca4e..b0514c0a7445 100644 --- a/lib/fonts/font_pearl_8x8.c +++ b/lib/fonts/font_pearl_8x8.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**********************************************/  /*                                            */  /*       Font file generated by cpi2fnt       */ diff --git a/lib/fonts/font_sun12x22.c b/lib/fonts/font_sun12x22.c index d3643853c33a..955d6eee3959 100644 --- a/lib/fonts/font_sun12x22.c +++ b/lib/fonts/font_sun12x22.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/font.h>  #define FONTDATAMAX 11264 diff --git a/lib/fonts/font_sun8x16.c b/lib/fonts/font_sun8x16.c index 268151325b83..03d71e53954a 100644 --- a/lib/fonts/font_sun8x16.c +++ b/lib/fonts/font_sun8x16.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/font.h>  #define FONTDATAMAX 4096 diff --git a/lib/gen_crc32table.c b/lib/gen_crc32table.c index d83a372fa76f..8f26660ea10a 100644 --- a/lib/gen_crc32table.c +++ b/lib/gen_crc32table.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <stdio.h>  #include "../include/generated/autoconf.h"  #include "crc32defs.h" diff --git a/lib/hweight.c b/lib/hweight.c index 43273a7d83cf..7660d88fd496 100644 --- a/lib/hweight.c +++ b/lib/hweight.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/bitops.h>  #include <asm/types.h> diff --git a/lib/idr.c b/lib/idr.c index f9adf4805fd7..edd9b2be1651 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -146,8 +146,8 @@ EXPORT_SYMBOL(idr_get_next_ext);   * idr_alloc() and idr_remove() (as long as the ID being removed is not   * the one being replaced!).   * - * Returns: 0 on success.  %-ENOENT indicates that @id was not found. - * %-EINVAL indicates that @id or @ptr were not valid. + * Returns: the old value on success.  %-ENOENT indicates that @id was not + * found.  %-EINVAL indicates that @id or @ptr were not valid.   */  void *idr_replace(struct idr *idr, void *ptr, int id)  { diff --git a/lib/inflate.c b/lib/inflate.c index 013a76193481..fbaf03c1748d 100644 --- a/lib/inflate.c +++ b/lib/inflate.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #define DEBG(x)  #define DEBG1(x)  /* inflate.c -- Not copyrighted 1992 by Mark Adler diff --git a/lib/int_sqrt.c b/lib/int_sqrt.c index 1ef4cc344977..db0b5aa071fc 100644 --- a/lib/int_sqrt.c +++ b/lib/int_sqrt.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Copyright (C) 2013 Davidlohr Bueso <[email protected]>   * diff --git a/lib/iomap.c b/lib/iomap.c index fc3dcb4b238e..541d926da95e 100644 --- a/lib/iomap.c +++ b/lib/iomap.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Implement the default iomap interfaces   * diff --git a/lib/iommu-common.c b/lib/iommu-common.c index 858dc1aae478..55b00de106b5 100644 --- a/lib/iommu-common.c +++ b/lib/iommu-common.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * IOMMU mmap management and range allocation functions.   * Based almost entirely upon the powerpc iommu allocator. diff --git a/lib/iommu-helper.c b/lib/iommu-helper.c index a816f3a80625..23633c0fda4a 100644 --- a/lib/iommu-helper.c +++ b/lib/iommu-helper.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * IOMMU helper functions for the free area management   */ diff --git a/lib/ioremap.c b/lib/ioremap.c index 4bb30206b942..b808a390e4c3 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Re-map IO memory to kernel address space so that we can access it.   * This is needed for high PCI addresses that aren't mapped in the @@ -161,6 +162,7 @@ int ioremap_page_range(unsigned long addr,  	unsigned long next;  	int err; +	might_sleep();  	BUG_ON(addr >= end);  	start = addr; diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 52c8dd6d8e82..1c1c06ddc20a 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -687,8 +687,10 @@ EXPORT_SYMBOL(_copy_from_iter_full_nocache);  static inline bool page_copy_sane(struct page *page, size_t offset, size_t n)  { -	size_t v = n + offset; -	if (likely(n <= v && v <= (PAGE_SIZE << compound_order(page)))) +	struct page *head = compound_head(page); +	size_t v = n + offset + page_address(page) - page_address(head); + +	if (likely(n <= v && v <= (PAGE_SIZE << compound_order(head))))  		return true;  	WARN_ON(1);  	return false; diff --git a/lib/irq_poll.c b/lib/irq_poll.c index 1d6565e81030..86a709954f5a 100644 --- a/lib/irq_poll.c +++ b/lib/irq_poll.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Functions related to interrupt-poll handling in the block layer. This   * is similar to NAPI for network devices. diff --git a/lib/kasprintf.c b/lib/kasprintf.c index 7f6c506a4942..bacf7b83ccf0 100644 --- a/lib/kasprintf.c +++ b/lib/kasprintf.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/lib/kasprintf.c   * diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index e590523ea476..f237a09a5862 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -294,6 +294,26 @@ static void cleanup_uevent_env(struct subprocess_info *info)  }  #endif +static void zap_modalias_env(struct kobj_uevent_env *env) +{ +	static const char modalias_prefix[] = "MODALIAS="; +	int i; + +	for (i = 0; i < env->envp_idx;) { +		if (strncmp(env->envp[i], modalias_prefix, +			    sizeof(modalias_prefix) - 1)) { +			i++; +			continue; +		} + +		if (i != env->envp_idx - 1) +			memmove(&env->envp[i], &env->envp[i + 1], +				sizeof(env->envp[i]) * env->envp_idx - 1); + +		env->envp_idx--; +	} +} +  /**   * kobject_uevent_env - send an uevent with environmental data   * @@ -409,16 +429,29 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,  		}  	} -	/* -	 * Mark "add" and "remove" events in the object to ensure proper -	 * events to userspace during automatic cleanup. If the object did -	 * send an "add" event, "remove" will automatically generated by -	 * the core, if not already done by the caller. -	 */ -	if (action == KOBJ_ADD) +	switch (action) { +	case KOBJ_ADD: +		/* +		 * Mark "add" event so we can make sure we deliver "remove" +		 * event to userspace during automatic cleanup. If +		 * the object did send an "add" event, "remove" will +		 * automatically generated by the core, if not already done +		 * by the caller. +		 */  		kobj->state_add_uevent_sent = 1; -	else if (action == KOBJ_REMOVE) +		break; + +	case KOBJ_REMOVE:  		kobj->state_remove_uevent_sent = 1; +		break; + +	case KOBJ_UNBIND: +		zap_modalias_env(env); +		break; + +	default: +		break; +	}  	mutex_lock(&uevent_sock_mutex);  	/* we will send an event, so request a new sequence number */ diff --git a/lib/kstrtox.c b/lib/kstrtox.c index 720144075c1e..661a1e807bd1 100644 --- a/lib/kstrtox.c +++ b/lib/kstrtox.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Convert integer string representation to an integer.   * If an integer doesn't fit into specified type, -E is returned. diff --git a/lib/kstrtox.h b/lib/kstrtox.h index f13eeeaf441d..3b4637bcd254 100644 --- a/lib/kstrtox.h +++ b/lib/kstrtox.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef _LIB_KSTRTOX_H  #define _LIB_KSTRTOX_H diff --git a/lib/list_sort.c b/lib/list_sort.c index 9e9acc37652f..85759928215b 100644 --- a/lib/list_sort.c +++ b/lib/list_sort.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/kernel.h>  #include <linux/bug.h>  #include <linux/compiler.h> diff --git a/lib/locking-selftest-hardirq.h b/lib/locking-selftest-hardirq.h index 10d4a150b259..0d144a6d6a96 100644 --- a/lib/locking-selftest-hardirq.h +++ b/lib/locking-selftest-hardirq.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef IRQ_DISABLE  #undef IRQ_ENABLE  #undef IRQ_ENTER diff --git a/lib/locking-selftest-mutex.h b/lib/locking-selftest-mutex.h index 68601b6f584b..7526c7746fb2 100644 --- a/lib/locking-selftest-mutex.h +++ b/lib/locking-selftest-mutex.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		ML diff --git a/lib/locking-selftest-rlock.h b/lib/locking-selftest-rlock.h index 6789044f4d0e..eccab18f5584 100644 --- a/lib/locking-selftest-rlock.h +++ b/lib/locking-selftest-rlock.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		RL diff --git a/lib/locking-selftest-rsem.h b/lib/locking-selftest-rsem.h index 62da886680c7..4544858f922e 100644 --- a/lib/locking-selftest-rsem.h +++ b/lib/locking-selftest-rsem.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		RSL diff --git a/lib/locking-selftest-rtmutex.h b/lib/locking-selftest-rtmutex.h index e3cb83989d16..fce8714c4170 100644 --- a/lib/locking-selftest-rtmutex.h +++ b/lib/locking-selftest-rtmutex.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		RTL diff --git a/lib/locking-selftest-softirq.h b/lib/locking-selftest-softirq.h index a83de2a04ace..6adde4867cb8 100644 --- a/lib/locking-selftest-softirq.h +++ b/lib/locking-selftest-softirq.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef IRQ_DISABLE  #undef IRQ_ENABLE  #undef IRQ_ENTER diff --git a/lib/locking-selftest-spin.h b/lib/locking-selftest-spin.h index ccd1b4b09757..6b24d699e502 100644 --- a/lib/locking-selftest-spin.h +++ b/lib/locking-selftest-spin.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		L diff --git a/lib/locking-selftest-wlock.h b/lib/locking-selftest-wlock.h index 0815322d99ed..0bc51c8cf3c5 100644 --- a/lib/locking-selftest-wlock.h +++ b/lib/locking-selftest-wlock.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		WL diff --git a/lib/locking-selftest-wsem.h b/lib/locking-selftest-wsem.h index b88c5f2dc5f0..5ef18f931c9b 100644 --- a/lib/locking-selftest-wsem.h +++ b/lib/locking-selftest-wsem.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #undef LOCK  #define LOCK		WSL diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c index cd0b5c964bd0..b5c1293ce147 100644 --- a/lib/locking-selftest.c +++ b/lib/locking-selftest.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * lib/locking-selftest.c   * @@ -2031,11 +2032,13 @@ void locking_selftest(void)  	print_testname("mixed read-lock/lock-write ABBA");  	pr_cont("             |");  	dotest(rlock_ABBA1, FAILURE, LOCKTYPE_RWLOCK); +#ifdef CONFIG_PROVE_LOCKING  	/*  	 * Lockdep does indeed fail here, but there's nothing we can do about  	 * that now.  Don't kill lockdep for it.  	 */  	unexpected_testcase_failures--; +#endif  	pr_cont("             |");  	dotest(rwsem_ABBA1, FAILURE, LOCKTYPE_RWSEM); diff --git a/lib/lockref.c b/lib/lockref.c index c4bfcb8836cd..47169ed7e964 100644 --- a/lib/lockref.c +++ b/lib/lockref.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/lockref.h> diff --git a/lib/lz4/lz4_decompress.c b/lib/lz4/lz4_decompress.c index bd3574312b82..141734d255e4 100644 --- a/lib/lz4/lz4_decompress.c +++ b/lib/lz4/lz4_decompress.c @@ -85,8 +85,8 @@ static FORCE_INLINE int LZ4_decompress_generic(  	const BYTE * const lowLimit = lowPrefix - dictSize;  	const BYTE * const dictEnd = (const BYTE *)dictStart + dictSize; -	const unsigned int dec32table[] = { 0, 1, 2, 1, 4, 4, 4, 4 }; -	const int dec64table[] = { 0, 0, 0, -1, 0, 1, 2, 3 }; +	static const unsigned int dec32table[] = { 0, 1, 2, 1, 4, 4, 4, 4 }; +	static const int dec64table[] = { 0, 0, 0, -1, 0, 1, 2, 3 };  	const int safeDecode = (endOnInput == endOnInputSize);  	const int checkOffset = ((safeDecode) && (dictSize < (int)(64 * KB))); diff --git a/lib/lzo/lzodefs.h b/lib/lzo/lzodefs.h index 6710b83ce72e..4edefd2f540c 100644 --- a/lib/lzo/lzodefs.h +++ b/lib/lzo/lzodefs.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  /*   *  lzodefs.h -- architecture, OS and compiler specific defines   * diff --git a/lib/memweight.c b/lib/memweight.c index e35fc8771893..94dd72ccaa7f 100644 --- a/lib/memweight.c +++ b/lib/memweight.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/export.h>  #include <linux/bug.h>  #include <linux/bitmap.h> diff --git a/lib/mpi/Makefile b/lib/mpi/Makefile index 019a68c90144..d5874a7f5ff9 100644 --- a/lib/mpi/Makefile +++ b/lib/mpi/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  #  # MPI multiprecision maths library (from gpg)  # diff --git a/lib/net_utils.c b/lib/net_utils.c index 148fc6e99ef6..af525353395d 100644 --- a/lib/net_utils.c +++ b/lib/net_utils.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/string.h>  #include <linux/if_ether.h>  #include <linux/ctype.h> diff --git a/lib/nlattr.c b/lib/nlattr.c index 927c2f19f119..3d8295c85505 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * NETLINK      Netlink attributes   * diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c index 0bc0a3535a8a..46e4c749e4eb 100644 --- a/lib/nmi_backtrace.c +++ b/lib/nmi_backtrace.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  NMI backtrace support   * diff --git a/lib/nodemask.c b/lib/nodemask.c index e42a5bf44d33..3aa454c54c0d 100644 --- a/lib/nodemask.c +++ b/lib/nodemask.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/nodemask.h>  #include <linux/module.h>  #include <linux/random.h> diff --git a/lib/notifier-error-inject.h b/lib/notifier-error-inject.h index 99b3b6fc470b..fafff5f2ac45 100644 --- a/lib/notifier-error-inject.h +++ b/lib/notifier-error-inject.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #include <linux/atomic.h>  #include <linux/debugfs.h>  #include <linux/notifier.h> diff --git a/lib/once.c b/lib/once.c index 05c8604627eb..bfb7420d0de3 100644 --- a/lib/once.c +++ b/lib/once.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/slab.h>  #include <linux/spinlock.h>  #include <linux/once.h> diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c index 3bf4a9984f4c..c72577e472f2 100644 --- a/lib/percpu_counter.c +++ b/lib/percpu_counter.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Fast batching percpu counters.   */ diff --git a/lib/raid6/Makefile b/lib/raid6/Makefile index a93adf6dcfb2..4add700ddfe3 100644 --- a/lib/raid6/Makefile +++ b/lib/raid6/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  obj-$(CONFIG_RAID6_PQ)	+= raid6_pq.o  raid6_pq-y	+= algos.o recov.o tables.o int1.o int2.o int4.o \ diff --git a/lib/raid6/recov_s390xc.c b/lib/raid6/recov_s390xc.c index b042dac826cc..179eec900cea 100644 --- a/lib/raid6/recov_s390xc.c +++ b/lib/raid6/recov_s390xc.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * RAID-6 data recovery in dual failure mode based on the XC instruction.   * diff --git a/lib/raid6/s390vx.uc b/lib/raid6/s390vx.uc index 7b45191a655f..140fa8bb5c23 100644 --- a/lib/raid6/s390vx.uc +++ b/lib/raid6/s390vx.uc @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * raid6_vx$#.c   * diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile index 2c7b60edea04..be1010bdc435 100644 --- a/lib/raid6/test/Makefile +++ b/lib/raid6/test/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  #  # This is a simple Makefile to test some of the RAID-6 code  # from userspace. diff --git a/lib/random32.c b/lib/random32.c index fa594b1140e6..0a90cb0e0fb6 100644 --- a/lib/random32.c +++ b/lib/random32.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * This is a maximally equidistributed combined Tausworthe generator   * based on code from GNU Scientific Library 1.5 (30 Jun 2004) diff --git a/lib/ratelimit.c b/lib/ratelimit.c index 08f8043cac61..d01f47135239 100644 --- a/lib/ratelimit.c +++ b/lib/ratelimit.c @@ -48,7 +48,9 @@ int ___ratelimit(struct ratelimit_state *rs, const char *func)  	if (time_is_before_jiffies(rs->begin + rs->interval)) {  		if (rs->missed) {  			if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE)) { -				pr_warn("%s: %d callbacks suppressed\n", func, rs->missed); +				printk_deferred(KERN_WARNING +						"%s: %d callbacks suppressed\n", +						func, rs->missed);  				rs->missed = 0;  			}  		} diff --git a/lib/rational.c b/lib/rational.c index f0aa21c2a762..ba7443677c90 100644 --- a/lib/rational.c +++ b/lib/rational.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * rational fractions   * diff --git a/lib/reciprocal_div.c b/lib/reciprocal_div.c index 464152410c51..fcb4ce682c6f 100644 --- a/lib/reciprocal_div.c +++ b/lib/reciprocal_div.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/kernel.h>  #include <asm/div64.h>  #include <linux/reciprocal_div.h> diff --git a/lib/refcount.c b/lib/refcount.c index 5d0582a9480c..0eb48353abe3 100644 --- a/lib/refcount.c +++ b/lib/refcount.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * Variant of atomic_t specialized for reference counts.   * diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 707ca5d677c6..ddd7dde87c3c 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -735,9 +735,9 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_exit);   * rhashtable_walk_start - Start a hash table walk   * @iter:	Hash table iterator   * - * Start a hash table walk.  Note that we take the RCU lock in all - * cases including when we return an error.  So you must always call - * rhashtable_walk_stop to clean up. + * Start a hash table walk at the current iterator position.  Note that we take + * the RCU lock in all cases including when we return an error.  So you must + * always call rhashtable_walk_stop to clean up.   *   * Returns zero if successful.   * @@ -846,7 +846,8 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_next);   * rhashtable_walk_stop - Finish a hash table walk   * @iter:	Hash table iterator   * - * Finish a hash table walk. + * Finish a hash table walk.  Does not reset the iterator to the start of the + * hash table.   */  void rhashtable_walk_stop(struct rhashtable_iter *iter)  	__releases(RCU) diff --git a/lib/seq_buf.c b/lib/seq_buf.c index cb18469e1f49..11f2ae0f9099 100644 --- a/lib/seq_buf.c +++ b/lib/seq_buf.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * seq_buf.c   * diff --git a/lib/sha1.c b/lib/sha1.c index 5a56dfd7b99d..1d96d2c02b82 100644 --- a/lib/sha1.c +++ b/lib/sha1.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * SHA1 routine optimized to do word accesses rather than byte accesses,   * and to avoid unnecessary copies into the context array. diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c index 2fb007be0212..835cc6df2776 100644 --- a/lib/smp_processor_id.c +++ b/lib/smp_processor_id.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * lib/smp_processor_id.c   * diff --git a/lib/sort.c b/lib/sort.c index 975c6ef6fec7..d6b7a202b0b6 100644 --- a/lib/sort.c +++ b/lib/sort.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   * A fast, small, non-recursive O(nlog n) sort for the Linux kernel   * diff --git a/lib/string.c b/lib/string.c index 9921dc202db4..5e8d410a93df 100644 --- a/lib/string.c +++ b/lib/string.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*   *  linux/lib/string.c   * diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 7e35fc450c5b..b53e1b5d80f4 100644 --- a/lib/strncpy_from_user.c +++ b/lib/strncpy_from_user.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/compiler.h>  #include <linux/export.h>  #include <linux/kasan-checks.h> diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c index a5f567747ced..60d0bbda8f5e 100644 --- a/lib/strnlen_user.c +++ b/lib/strnlen_user.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/kernel.h>  #include <linux/export.h>  #include <linux/uaccess.h> diff --git a/lib/syscall.c b/lib/syscall.c index 2c6cd1b5c3ea..1a7077f20eae 100644 --- a/lib/syscall.c +++ b/lib/syscall.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/ptrace.h>  #include <linux/sched.h>  #include <linux/sched/task_stack.h> diff --git a/lib/ts_fsm.c b/lib/ts_fsm.c index 5696a35184e4..69557c74ef9f 100644 --- a/lib/ts_fsm.c +++ b/lib/ts_fsm.c @@ -11,7 +11,7 @@   * ==========================================================================   *   *   A finite state machine consists of n states (struct ts_fsm_token) - *   representing the pattern as a finite automation. The data is read + *   representing the pattern as a finite automaton. The data is read   *   sequentially on an octet basis. Every state token specifies the number   *   of recurrences and the type of value accepted which can be either a   *   specific character or ctype based set of characters. The available diff --git a/lib/ts_kmp.c b/lib/ts_kmp.c index 632f783e65f1..ffbe66cbb0ed 100644 --- a/lib/ts_kmp.c +++ b/lib/ts_kmp.c @@ -27,7 +27,7 @@   *   *   [1] Cormen, Leiserson, Rivest, Stein   *       Introdcution to Algorithms, 2nd Edition, MIT Press - *   [2] See finite automation theory + *   [2] See finite automaton theory   */  #include <linux/module.h> diff --git a/lib/ubsan.h b/lib/ubsan.h index b2d18d4a53f5..88f23557edbe 100644 --- a/lib/ubsan.h +++ b/lib/ubsan.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef _LIB_UBSAN_H  #define _LIB_UBSAN_H diff --git a/lib/ucs2_string.c b/lib/ucs2_string.c index ae8d2491133c..d7e06b28de38 100644 --- a/lib/ucs2_string.c +++ b/lib/ucs2_string.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/ucs2_string.h>  #include <linux/module.h> diff --git a/lib/usercopy.c b/lib/usercopy.c index f5d9f08ee032..15e2e6fb060e 100644 --- a/lib/usercopy.c +++ b/lib/usercopy.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  #include <linux/uaccess.h>  /* out-of-line parts */ diff --git a/lib/win_minmax.c b/lib/win_minmax.c index c8420d404926..6bdc1cd15f76 100644 --- a/lib/win_minmax.c +++ b/lib/win_minmax.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /**   * lib/minmax.c: windowed min/max tracker   * |