kernel_optimize_test/lib
Stephen Brennan 6029f86740 assoc_array: Fix BUG_ON during garbage collect
commit d1dc87763f406d4e67caf16dbe438a5647692395 upstream.

A rare BUG_ON triggered in assoc_array_gc:

    [3430308.818153] kernel BUG at lib/assoc_array.c:1609!

Which corresponded to the statement currently at line 1593 upstream:

    BUG_ON(assoc_array_ptr_is_meta(p));

Using the data from the core dump, I was able to generate a userspace
reproducer[1] and determine the cause of the bug.

[1]: https://github.com/brenns10/kernel_stuff/tree/master/assoc_array_gc

After running the iterator on the entire branch, an internal tree node
looked like the following:

    NODE (nr_leaves_on_branch: 3)
      SLOT [0] NODE (2 leaves)
      SLOT [1] NODE (1 leaf)
      SLOT [2..f] NODE (empty)

In the userspace reproducer, the pr_devel output when compressing this
node was:

    -- compress node 0x5607cc089380 --
    free=0, leaves=0
    [0] retain node 2/1 [nx 0]
    [1] fold node 1/1 [nx 0]
    [2] fold node 0/1 [nx 2]
    [3] fold node 0/2 [nx 2]
    [4] fold node 0/3 [nx 2]
    [5] fold node 0/4 [nx 2]
    [6] fold node 0/5 [nx 2]
    [7] fold node 0/6 [nx 2]
    [8] fold node 0/7 [nx 2]
    [9] fold node 0/8 [nx 2]
    [10] fold node 0/9 [nx 2]
    [11] fold node 0/10 [nx 2]
    [12] fold node 0/11 [nx 2]
    [13] fold node 0/12 [nx 2]
    [14] fold node 0/13 [nx 2]
    [15] fold node 0/14 [nx 2]
    after: 3

At slot 0, an internal node with 2 leaves could not be folded into the
node, because there was only one available slot (slot 0). Thus, the
internal node was retained. At slot 1, the node had one leaf, and was
able to be folded in successfully. The remaining nodes had no leaves,
and so were removed. By the end of the compression stage, there were 14
free slots, and only 3 leaf nodes. The tree was ascended and then its
parent node was compressed. When this node was seen, it could not be
folded, due to the internal node it contained.

The invariant for compression in this function is: whenever
nr_leaves_on_branch < ASSOC_ARRAY_FAN_OUT, the node should contain all
leaf nodes. The compression step currently cannot guarantee this, given
the corner case shown above.

To fix this issue, retry compression whenever we have retained a node,
and yet nr_leaves_on_branch < ASSOC_ARRAY_FAN_OUT. This second
compression will then allow the node in slot 1 to be folded in,
satisfying the invariant. Below is the output of the reproducer once the
fix is applied:

    -- compress node 0x560e9c562380 --
    free=0, leaves=0
    [0] retain node 2/1 [nx 0]
    [1] fold node 1/1 [nx 0]
    [2] fold node 0/1 [nx 2]
    [3] fold node 0/2 [nx 2]
    [4] fold node 0/3 [nx 2]
    [5] fold node 0/4 [nx 2]
    [6] fold node 0/5 [nx 2]
    [7] fold node 0/6 [nx 2]
    [8] fold node 0/7 [nx 2]
    [9] fold node 0/8 [nx 2]
    [10] fold node 0/9 [nx 2]
    [11] fold node 0/10 [nx 2]
    [12] fold node 0/11 [nx 2]
    [13] fold node 0/12 [nx 2]
    [14] fold node 0/13 [nx 2]
    [15] fold node 0/14 [nx 2]
    internal nodes remain despite enough space, retrying
    -- compress node 0x560e9c562380 --
    free=14, leaves=1
    [0] fold node 2/15 [nx 0]
    after: 3

Changes
=======
DH:
 - Use false instead of 0.
 - Reorder the inserted lines in a couple of places to put retained before
   next_slot.

ver #2)
 - Fix typo in pr_devel, correct comparison to "<="

Fixes: 3cb989501c ("Add a generic associative array implementation.")
Cc: <stable@vger.kernel.org>
Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Andrew Morton <akpm@linux-foundation.org>
cc: keyrings@vger.kernel.org
Link: https://lore.kernel.org/r/20220511225517.407935-1-stephen.s.brennan@oracle.com/ # v1
Link: https://lore.kernel.org/r/20220512215045.489140-1-stephen.s.brennan@oracle.com/ # v2
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-06 08:42:41 +02:00
..
842 kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
crypto lib/crypto: blake2s: avoid indirect calls to compression function for Clang CFI 2022-05-30 09:33:26 +02:00
dim dim: initialize all struct fields 2022-05-18 10:23:44 +02:00
fonts Fonts: Replace discarded const qualifier 2020-11-03 10:51:34 +01:00
kunit kunit: make kunit_test_timeout compatible with comment 2022-04-08 14:40:04 +02:00
livepatch Kbuild updates for v5.9 2020-08-09 14:10:26 -07:00
lz4 lz4: fix LZ4_decompress_safe_partial read out of bound 2022-04-13 21:01:08 +02:00
lzo kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
math lib/math/rational.c: fix divide by zero 2021-07-14 16:56:51 +02:00
mpi lib/mpi: Add the return value check of kcalloc() 2022-01-27 10:54:02 +01:00
pldmfw Add pldmfw library for PLDM firmware update 2020-07-28 17:07:06 -07:00
raid6 lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3 2022-04-08 14:40:31 +02:00
reed_solomon kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
vdso vdso/treewide: Add vdso_data pointer argument to __arch_get_hw_counter() 2020-08-06 10:57:30 +02:00
xz lib/xz: Validate the value before assigning it to an enum variable 2021-11-18 14:03:58 +01:00
zlib_deflate kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
zlib_dfltcc zlib: move EXPORT_SYMBOL() and MODULE_LICENSE() out of dfltcc_syms.c 2021-01-06 14:56:51 +01:00
zlib_inflate kbuild: trace functions in subdirectories of lib/ 2020-08-10 01:32:59 +09:00
zstd lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
argv_split.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
ashldi3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
ashrdi3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
asn1_decoder.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
assoc_array.c assoc_array: Fix BUG_ON during garbage collect 2022-06-06 08:42:41 +02:00
atomic64_test.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
atomic64.c locking/atomic: Use s64 for atomic64 2019-06-03 12:32:56 +02:00
audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bcd.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bch.c lib/bch: Allow easy bit swapping 2020-05-24 20:48:11 +02:00
bitfield_kunit.c lib: kunit: Fix compilation test when using TEST_BIT_FIELD_COMPILE 2020-10-16 13:25:14 -06:00
bitmap.c lib: bitmap: delete duplicated words 2020-10-16 11:11:19 -07:00
bitrev.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
bootconfig.c lib/bootconfig: Fix to remove tailing spaces after value 2020-09-21 21:50:09 -04:00
bsearch.c lib/bsearch: Provide __always_inline variant 2020-06-11 15:14:53 +02:00
btree.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 431 2019-06-05 17:37:16 +02:00
bucket_locks.c ila: make lockdep happy again 2018-08-16 12:14:42 -07:00
bug.c bug: Remove redundant condition check in report_bug 2021-05-14 09:50:32 +02:00
build_OID_registry treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
bust_spinlocks.c s390: use common bust_spinlocks() 2018-11-30 07:22:05 +01:00
check_signature.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
checksum.c unify generic instances of csum_partial_copy_nocheck() 2020-08-20 15:45:14 -04:00
clz_ctz.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
clz_tab.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cmdline.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
cmpdi2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
compat_audit.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cpu_rmap.c lib: cpu_rmap: Use pr_warn instead of pr_warning 2019-10-18 15:01:57 +02:00
cpumask.c Revert "lib: Restrict cpumask_local_spread to houskeeping CPUs" 2021-02-17 11:02:24 +01:00
crc-ccitt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
crc-itu-t.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
crc-t10dif.c crc-t10dif: clean up some more things 2020-06-18 17:26:43 +10:00
crc4.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
crc7.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
crc8.c docs: clean up and add rest of CRC functions to kernel-api.rst 2017-09-26 15:01:20 -06:00
crc16.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
crc32.c lib/crc32.c: fix trivial typo in preprocessor condition 2020-10-16 11:11:20 -07:00
crc32defs.h lib/crc: Move polynomial definition to separate header 2018-07-27 19:04:33 +08:00
crc32test.c lib/crc32test: remove extra local_irq_disable/enable 2020-11-02 12:14:19 -08:00
crc64.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
ctype.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debug_info.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
debug_locks.c locking/lockdep: Improve noinstr vs errors 2021-06-30 08:47:18 -04:00
debugobjects.c debugobjects: Free per CPU pool after CPU unplug 2020-10-01 16:13:54 +02:00
dec_and_lock.c atomic: Add irqsave variant of atomic_dec_and_lock() 2018-06-12 23:33:24 +02:00
decompress_bunzip2.c lib: decompress_bunzip2: delete duplicated words 2020-10-16 11:11:19 -07:00
decompress_inflate.c lib/zlib: add s390 hardware support for kernel zlib_inflate 2020-01-31 10:30:40 -08:00
decompress_unlz4.c lib/decompress_unlz4.c: correctly handle zero-padding around initrds. 2021-07-20 16:05:46 +02:00
decompress_unlzma.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
decompress_unlzo.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 95 2019-05-24 17:37:53 +02:00
decompress_unxz.c lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression 2021-11-18 14:03:58 +01:00
decompress_unzstd.c lib: decompress_unzstd: Limit output size 2020-09-03 10:13:09 +02:00
decompress.c lib: Add zstd support to decompress 2020-07-31 11:49:08 +02:00
devres.c driver core: platform: Document return type of more functions 2020-09-10 18:30:01 +02:00
digsig.c Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs" 2019-07-10 18:43:43 -07:00
dump_stack.c kernel: rename show_stack_loglvl() => show_stack() 2020-06-09 09:39:13 -07:00
dynamic_debug.c dyndbg: fix parsing file query without a line-range suffix 2021-05-11 14:47:11 +02:00
dynamic_queue_limits.c lib: dynamic_queue_limits: delete duplicated words + fix typo 2020-10-16 11:11:20 -07:00
earlycpio.c lib: earlycpio: delete duplicated words 2020-10-16 11:11:20 -07:00
errname.c printf: add support for printing symbolic error names 2019-10-17 16:23:25 +02:00
error-inject.c treewide: Switch printk users from %pf and %pF to %ps and %pS, respectively 2019-04-09 14:19:06 +02:00
errseq.c errseq: Always report a writeback error once 2018-04-27 08:51:26 -04:00
extable.c lib/extable.c: add missing prototypes 2019-09-25 17:51:39 -07:00
fault-inject-usercopy.c lib, include/linux: add usercopy failure capability 2020-10-16 11:11:22 -07:00
fault-inject.c fault_inject: Don't rely on "return value" from WRITE_ONCE() 2020-04-15 21:36:41 +01:00
fdt_addresses.c libfdt: include fdt_addresses.c 2020-01-08 16:59:19 +00:00
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
fdt.c
find_bit_benchmark.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 295 2019-06-05 17:36:38 +02:00
find_bit.c kernel.h: split out min()/max() et al. helpers 2020-10-16 11:11:19 -07:00
flex_proportions.c lib/flex_proportions.c: cleanup __fprop_inc_percpu_max 2020-06-04 19:06:25 -07:00
gen_crc32table.c lib/crc: Use consistent naming for CRC-32 polynomials 2018-07-27 19:04:33 +08:00
gen_crc64table.c lib: don't depend on linux headers being installed. 2018-12-29 11:36:44 -08:00
genalloc.c lib/genalloc: fix the overflow when size is too big 2021-01-12 20:18:16 +01:00
generic-radix-tree.c lib/generic-radix-tree.c: add kmemleak annotations 2019-10-14 15:04:00 -07:00
glob.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
globtest.c
hexdump.c hex2bin: fix access beyond string end 2022-05-09 09:04:59 +02:00
hweight.c x86/kconfig: Disable CONFIG_GENERIC_HWEIGHT and remove __HAVE_ARCH_SW_HWEIGHT 2019-05-13 11:07:33 +02:00
idr.c XArray updates for 5.9 2020-10-20 14:39:37 -07:00
inflate.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
interval_tree_test.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
interval_tree.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
iomap_copy.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 504 2019-06-19 17:09:56 +02:00
iomap.c iomap: constify ioreadX() iomem argument (as in generic implementation) 2020-08-14 19:56:57 -07:00
iommu-helper.c iommu-helper: mark iommu_is_span_boundary as inline 2018-05-09 06:55:44 +02:00
iov_iter.c lib/iov_iter: initialize "flags" in new pipe_buffer 2022-02-23 12:01:06 +01:00
irq_poll.c lib/irq_poll: Support schedules in non-interrupt contexts 2019-02-19 20:52:19 -07:00
irq_regs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
is_single_threaded.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
kasprintf.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE 2022-03-19 13:44:44 +01:00
Kconfig.debug random: remove ratelimiting for in-kernel unseeded randomness 2022-05-30 09:33:44 +02:00
Kconfig.kasan KASAN: port KASAN Tests to KUnit 2020-10-13 18:38:32 -07:00
Kconfig.kcsan kcsan: Test support for compound instrumentation 2020-08-24 15:09:58 -07:00
Kconfig.kgdb kgdb: Honour the kprobe blocklist when setting breakpoints 2020-09-28 12:14:08 +01:00
Kconfig.ubsan ubsan: introduce CONFIG_UBSAN_LOCAL_BOUNDS for Clang 2020-10-16 11:11:22 -07:00
kfifo.c Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()" 2019-08-30 18:47:15 -07:00
klist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 248 2019-06-19 17:09:08 +02:00
kobject_uevent.c kobject_uevent: remove warning in init_uevent_argv() 2021-05-19 10:13:18 +02:00
kobject.c kobject: Drop unneeded conditional in __kobject_del() 2020-09-07 11:24:17 +02:00
kstrtox.c lib: vsprintf: Fix handling of number field widths in vsscanf 2021-07-14 16:55:57 +02:00
kstrtox.h lib: vsprintf: Fix handling of number field widths in vsscanf 2021-07-14 16:55:57 +02:00
libcrc32c.c lib: libcrc32c: delete duplicated words 2020-10-16 11:11:19 -07:00
linear_ranges.c lib: linear_ranges: Add missing MODULE_LICENSE() 2020-05-11 11:55:28 +01:00
list_debug.c lib/list_debug.c: print unmangled addresses 2018-04-11 10:28:35 -07:00
list_sort.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
list-test.c Fix linked-list KUnit test when run multiple times 2020-03-25 16:38:39 -06:00
llist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
locking-selftest-hardirq.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-mutex.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-rsem.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-rtmutex.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-softirq.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest-wsem.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
locking-selftest.c lockdep/selftests: Fix selftests vs PROVE_RAW_LOCK_NESTING 2021-07-14 16:56:10 +02:00
lockref.c lockref: Limit number of cmpxchg loop retries 2019-06-07 13:15:06 -07:00
logic_pio.c PCI: Fix pci_register_io_range() memory leak 2021-03-17 17:06:25 +01:00
lru_cache.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 91 2019-05-24 17:37:53 +02:00
lshrdi3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
Makefile selftest/fpu: avoid clang warning 2020-12-11 14:02:14 -08:00
memcat_p.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
memory-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
memregion.c lib/memregion.c: include memregion.h 2020-09-26 10:33:57 -07:00
memweight.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
muldi3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
net_utils.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
netdev-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nlattr.c net: fix nla_strcmp to handle more then one trailing null character 2021-05-19 10:13:08 +02:00
nmi_backtrace.c lib: Add backtrace_idle parameter to force backtrace of idle CPUs 2020-08-24 14:24:25 -07:00
nodemask.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
notifier-error-inject.c lib: notifier-error-inject: no need to check return value of debugfs_create functions 2019-07-03 16:57:18 +02:00
notifier-error-inject.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
objagg.c lib: objagg: Replace zero-length arrays with flexible-array member 2020-02-16 18:33:00 -08:00
of-reconfig-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
oid_registry.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
once.c once: Fix panic when module unload 2021-09-03 10:09:21 +02:00
packing.c lib: packing: add documentation for pbuflen argument 2020-06-28 20:45:27 -07:00
parman.c
parser.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 230 2019-06-19 17:09:06 +02:00
pci_iomap.c PCI: Add SPDX GPL-2.0 when no license was specified 2018-01-26 11:45:16 -06:00
percpu_counter.c lib/percpu_counter.c: use helper macro abs() 2020-10-16 11:11:20 -07:00
percpu_test.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
percpu-refcount.c percpu_ref_init(): clean ->percpu_count_ref on failure 2022-06-06 08:42:40 +02:00
plist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 10 2019-05-21 11:28:45 +02:00
pm-notifier-error-inject.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
radix-tree.c XArray updates for 5.9 2020-10-20 14:39:37 -07:00
random32.c random: replace custom notifier chain with standard one 2022-05-30 09:33:38 +02:00
ratelimit.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
rbtree_test.c augmented rbtree: add new RB_DECLARE_CALLBACKS_MAX macro 2019-09-25 17:51:39 -07:00
rbtree.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
refcount.c locking/refcount: Consolidate implementations of refcount_t 2019-11-25 09:15:32 +01:00
rhashtable.c rhashtable: Restore RCU marking on rhash_lock_head 2020-07-28 17:09:49 -07:00
sbitmap.c sbitmap: Consider cleared bits in sbitmap_bitmap_show() 2020-07-01 10:53:00 -06:00
scatterlist.c lib/scatterlist: use consistent sg_copy_buffer() return type 2020-10-29 08:55:45 -06:00
seq_buf.c seq_buf: Fix overflow in seq_buf_putmem_hex() 2021-07-19 09:45:00 +02:00
sg_pool.c SCSI sg on 20190709 2019-07-11 15:17:41 -07:00
sg_split.c lib: scatterlist: Fix to support no mapped sg 2019-08-08 07:45:01 -06:00
sha1.c lib/crypto: sha1: re-roll loops to reduce code size 2022-05-30 09:33:26 +02:00
show_mem.c mm: remove quicklist page table caches 2019-09-24 15:54:09 -07:00
siphash.c siphash: use one source of truth for siphash permutations 2022-05-30 09:33:43 +02:00
smp_processor_id.c lib/smp_processor_id: Move it into noinstr section 2020-06-11 15:14:36 +02:00
sort.c lib/sort: Move swap, cmp and cmp_r function types for wider use 2019-11-14 13:15:11 -05:00
stackdepot.c lib: stackdepot: turn depot_lock spinlock to raw_spinlock 2021-05-22 11:40:55 +02:00
stmp_device.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
string_helpers.c lib: string_helpers: provide kfree_strarray() 2020-09-30 10:50:30 +02:00
string.c lib/string.c: implement stpcpy 2020-09-26 10:33:57 -07:00
strncpy_from_user.c lib/strncpy_from_user.c: Mask out bytes after NUL terminator. 2020-11-19 11:56:16 -08:00
strnlen_user.c uaccess: Selectively open read or write user access 2020-05-01 12:35:21 +10:00
syscall.c lib/syscall: fix syscall registers retrieval on 32-bit platforms 2020-12-03 09:52:44 -08:00
test_bitmap.c test_bitmap: remove user bitmap tests 2020-09-08 22:21:33 -04:00
test_bitops.c lib/test_bitops: do the full test during module init 2020-08-12 10:57:59 -07:00
test_bits.c lib/test_bits.c: add tests of GENMASK 2020-08-12 10:58:00 -07:00
test_blackhole_dev.c blackhole_dev: add a selftest 2019-07-01 19:34:46 -07:00
test_bpf.c bpf/tests: Do not PASS tests without actually testing the result 2021-09-18 13:40:21 +02:00
test_debug_virtual.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
test_firmware.c test_firmware: Test partial read support 2020-10-05 13:37:04 +02:00
test_fpu.c selftests/fpu: Add an FPU selftest 2020-06-29 10:02:23 +02:00
test_free_pages.c mm/page_alloc.c: fix freeing non-compound pages 2020-10-13 18:38:33 -07:00
test_hash.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
test_hexdump.c test_hexdump: use memcpy instead of strncpy 2018-11-30 12:13:15 -08:00
test_hmm_uapi.h mm/hmm: add tests for hmm_pfn_to_map_order() 2020-07-10 16:24:28 -03:00
test_hmm.c mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault 2022-01-27 10:54:36 +01:00
test_ida.c test_ida: Fix lockdep warning 2018-10-15 16:31:29 -04:00
test_kasan_module.c KASAN: port KASAN Tests to KUnit 2020-10-13 18:38:32 -07:00
test_kasan.c kasan: fix unit tests with CONFIG_UBSAN_LOCAL_BOUNDS enabled 2021-05-19 10:13:11 +02:00
test_kmod.c lib/test: use after free in register_test_dev_kmod() 2022-04-08 14:40:30 +02:00
test_linear_ranges.c lib/test_linear_ranges: add a test for the 'linear_ranges' 2020-05-08 18:18:12 +01:00
test_list_sort.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
test_lockup.c lib/test_lockup: fix kernel pointer check for separate address spaces 2022-04-08 14:40:35 +02:00
test_memcat_p.c lib: Fix ia64 bootloader linkage 2018-10-16 13:45:44 +02:00
test_meminit.c lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test 2022-01-27 10:54:36 +01:00
test_min_heap.c lib: Introduce generic min-heap 2020-03-06 11:56:59 +01:00
test_module.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
test_objagg.c test_objagg: Fix potential memory leak in error handling 2020-06-15 13:32:11 -07:00
test_overflow.c lib/test_overflow.c: avoid tainting the kernel and fix wrap size 2019-07-16 19:23:22 -07:00
test_parman.c
test_printf.c Driver core patches for 5.8-rc1 2020-06-07 10:53:36 -07:00
test_rhashtable.c rhashtable: fix indentation of a continue statement 2020-09-20 14:10:06 -07:00
test_siphash.c
test_sort.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
test_stackinit.c lib/test_stackinit: Fix static initializer test 2021-09-18 13:40:37 +02:00
test_static_key_base.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
test_static_keys.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
test_string.c lib/test_string.c: add some testcases for strchr and strnchr 2019-07-16 19:23:22 -07:00
test_strscpy.c lib: Add test module for strscpy_pad 2019-04-08 16:44:21 -06:00
test_sysctl.c lib: test_sysctl: delete duplicated words 2020-10-16 11:11:20 -07:00
test_ubsan.c ubsan: remove CONFIG_UBSAN_OBJECT_SIZE 2022-04-13 21:01:10 +02:00
test_user_copy.c usercopy: Avoid soft lockups in test_check_nonzero_user() 2019-10-16 14:56:21 +02:00
test_uuid.c uuid: fix incorrect uuid_equal conversion in test_uuid_test 2017-07-21 09:38:30 +02:00
test_vmalloc.c lib/test_vmalloc.c: Add test cases for kvfree_rcu() 2020-06-29 11:59:26 -07:00
test_xarray.c XArray: Fix xas_create_range() when multi-order entry present 2022-04-08 14:40:40 +02:00
test-kstrtox.c
test-string_helpers.c lib/test-string_helpers.c: Add string_upper() and string_lower() tests 2020-07-15 12:45:06 +03:00
textsearch.c lib: textsearch: fix escapes in example code 2019-10-03 12:12:23 -04:00
timerqueue.c lib/timerqueue: Rely on rbtree semantics for next timer 2019-07-24 17:38:01 +02:00
ts_bm.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00
ts_fsm.c lib: Revert use of fallthrough pseudo-keyword in lib/ 2020-08-24 14:17:44 -07:00
ts_kmp.c lib/ts_kmp.c: replace zero-length array with flexible-array member 2020-04-07 10:43:43 -07:00
ubsan.c ubsan: implement __ubsan_handle_alignment_assumption 2021-02-17 11:02:24 +01:00
ubsan.h ubsan: implement __ubsan_handle_alignment_assumption 2021-02-17 11:02:24 +01:00
ucmpdi2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 120 2019-05-24 17:39:02 +02:00
ucs2_string.c lib/ucs2_string.c: add MODULE_LICENSE() 2018-06-07 17:34:39 -07:00
usercopy.c lib, uaccess: add failure injection to usercopy functions 2020-10-16 11:11:22 -07:00
uuid.c uuid: Provide a GUID generator for raw buffer 2020-03-23 17:01:47 +01:00
vsprintf.c random: replace custom notifier chain with standard one 2022-05-30 09:33:38 +02:00
win_minmax.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xarray.c XArray: Update the LRU list in xas_split() 2022-04-08 14:40:40 +02:00
xxhash.c lib/: replace HTTP links with HTTPS ones 2020-08-12 10:58:00 -07:00