Merge branch 'akpm' (patches from Andrew)
Merge more updates from Andrew Morton:
"147 patches, based on 7d2a07b769.
Subsystems affected by this patch series: mm (memory-hotplug, rmap,
ioremap, highmem, cleanups, secretmem, kfence, damon, and vmscan),
alpha, percpu, procfs, misc, core-kernel, MAINTAINERS, lib,
checkpatch, epoll, init, nilfs2, coredump, fork, pids, criu, kconfig,
selftests, ipc, and scripts"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (94 commits)
scripts: check_extable: fix typo in user error message
mm/workingset: correct kernel-doc notations
ipc: replace costly bailout check in sysvipc_find_ipc()
selftests/memfd: remove unused variable
Kconfig.debug: drop selecting non-existing HARDLOCKUP_DETECTOR_ARCH
configs: remove the obsolete CONFIG_INPUT_POLLDEV
prctl: allow to setup brk for et_dyn executables
pid: cleanup the stale comment mentioning pidmap_init().
kernel/fork.c: unexport get_{mm,task}_exe_file
coredump: fix memleak in dump_vma_snapshot()
fs/coredump.c: log if a core dump is aborted due to changed file permissions
nilfs2: use refcount_dec_and_lock() to fix potential UAF
nilfs2: fix memory leak in nilfs_sysfs_delete_snapshot_group
nilfs2: fix memory leak in nilfs_sysfs_create_snapshot_group
nilfs2: fix memory leak in nilfs_sysfs_delete_##name##_group
nilfs2: fix memory leak in nilfs_sysfs_create_##name##_group
nilfs2: fix NULL pointer in nilfs_##name##_attr_release
nilfs2: fix memory leak in nilfs_sysfs_create_device_group
trap: cleanup trap_init()
init: move usermodehelper_enable() to populate_rootfs()
...
This commit is contained in:
+4
-5
@@ -1064,7 +1064,6 @@ config HARDLOCKUP_DETECTOR
|
||||
depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
|
||||
select LOCKUP_DETECTOR
|
||||
select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
|
||||
select HARDLOCKUP_DETECTOR_ARCH if HAVE_HARDLOCKUP_DETECTOR_ARCH
|
||||
help
|
||||
Say Y here to enable the kernel to act as a watchdog to detect
|
||||
hard lockups.
|
||||
@@ -2061,8 +2060,9 @@ config TEST_MIN_HEAP
|
||||
If unsure, say N.
|
||||
|
||||
config TEST_SORT
|
||||
tristate "Array-based sort test"
|
||||
depends on DEBUG_KERNEL || m
|
||||
tristate "Array-based sort test" if !KUNIT_ALL_TESTS
|
||||
depends on KUNIT
|
||||
default KUNIT_ALL_TESTS
|
||||
help
|
||||
This option enables the self-test function of 'sort()' at boot,
|
||||
or at module load time.
|
||||
@@ -2443,8 +2443,7 @@ config SLUB_KUNIT_TEST
|
||||
|
||||
config RATIONAL_KUNIT_TEST
|
||||
tristate "KUnit test for rational.c" if !KUNIT_ALL_TESTS
|
||||
depends on KUNIT
|
||||
select RATIONAL
|
||||
depends on KUNIT && RATIONAL
|
||||
default KUNIT_ALL_TESTS
|
||||
help
|
||||
This builds the rational math unit test.
|
||||
|
||||
+2
-1
@@ -89,7 +89,8 @@ static void __dump_stack(const char *log_lvl)
|
||||
}
|
||||
|
||||
/**
|
||||
* dump_stack - dump the current task information and its stack trace
|
||||
* dump_stack_lvl - dump the current task information and its stack trace
|
||||
* @log_lvl: log level
|
||||
*
|
||||
* Architectures can override this implementation by implementing its own.
|
||||
*/
|
||||
|
||||
+6
-2
@@ -672,7 +672,7 @@ static size_t copy_mc_pipe_to_iter(const void *addr, size_t bytes,
|
||||
* _copy_mc_to_iter - copy to iter with source memory error exception handling
|
||||
* @addr: source kernel address
|
||||
* @bytes: total transfer length
|
||||
* @iter: destination iterator
|
||||
* @i: destination iterator
|
||||
*
|
||||
* The pmem driver deploys this for the dax operation
|
||||
* (dax_copy_to_iter()) for dax reads (bypass page-cache and the
|
||||
@@ -690,6 +690,8 @@ static size_t copy_mc_pipe_to_iter(const void *addr, size_t bytes,
|
||||
* * ITER_KVEC, ITER_PIPE, and ITER_BVEC can return short copies.
|
||||
* Compare to copy_to_iter() where only ITER_IOVEC attempts might return
|
||||
* a short copy.
|
||||
*
|
||||
* Return: number of bytes copied (may be %0)
|
||||
*/
|
||||
size_t _copy_mc_to_iter(const void *addr, size_t bytes, struct iov_iter *i)
|
||||
{
|
||||
@@ -744,7 +746,7 @@ EXPORT_SYMBOL(_copy_from_iter_nocache);
|
||||
* _copy_from_iter_flushcache - write destination through cpu cache
|
||||
* @addr: destination kernel address
|
||||
* @bytes: total transfer length
|
||||
* @iter: source iterator
|
||||
* @i: source iterator
|
||||
*
|
||||
* The pmem driver arranges for filesystem-dax to use this facility via
|
||||
* dax_copy_from_iter() for ensuring that writes to persistent memory
|
||||
@@ -753,6 +755,8 @@ EXPORT_SYMBOL(_copy_from_iter_nocache);
|
||||
* all iterator types. The _copy_from_iter_nocache() only attempts to
|
||||
* bypass the cache for the ITER_IOVEC case, and on some archs may use
|
||||
* instructions that strand dirty-data in the cache.
|
||||
*
|
||||
* Return: number of bytes copied (may be %0)
|
||||
*/
|
||||
size_t _copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i)
|
||||
{
|
||||
|
||||
+1
-1
@@ -14,4 +14,4 @@ config PRIME_NUMBERS
|
||||
If unsure, say N.
|
||||
|
||||
config RATIONAL
|
||||
bool
|
||||
tristate
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/export.h>
|
||||
#include <linux/minmax.h>
|
||||
#include <linux/limits.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
/*
|
||||
* calculate best rational approximation for a given fraction
|
||||
@@ -106,3 +107,5 @@ void rational_best_approximation(
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(rational_best_approximation);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
||||
+1
-1
@@ -614,7 +614,7 @@ page_flags_test(int section, int node, int zone, int last_cpupid,
|
||||
bool append = false;
|
||||
int i;
|
||||
|
||||
flags &= BIT(NR_PAGEFLAGS) - 1;
|
||||
flags &= PAGEFLAGS_MASK;
|
||||
if (flags) {
|
||||
page_flags |= flags;
|
||||
snprintf(cmp_buf + size, BUF_SIZE - size, "%s", name);
|
||||
|
||||
+19
-21
@@ -1,4 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
#include <kunit/test.h>
|
||||
|
||||
#include <linux/sort.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
@@ -7,18 +10,17 @@
|
||||
|
||||
#define TEST_LEN 1000
|
||||
|
||||
static int __init cmpint(const void *a, const void *b)
|
||||
static int cmpint(const void *a, const void *b)
|
||||
{
|
||||
return *(int *)a - *(int *)b;
|
||||
}
|
||||
|
||||
static int __init test_sort_init(void)
|
||||
static void test_sort(struct kunit *test)
|
||||
{
|
||||
int *a, i, r = 1, err = -ENOMEM;
|
||||
int *a, i, r = 1;
|
||||
|
||||
a = kmalloc_array(TEST_LEN, sizeof(*a), GFP_KERNEL);
|
||||
if (!a)
|
||||
return err;
|
||||
a = kunit_kmalloc_array(test, TEST_LEN, sizeof(*a), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, a);
|
||||
|
||||
for (i = 0; i < TEST_LEN; i++) {
|
||||
r = (r * 725861) % 6599;
|
||||
@@ -27,24 +29,20 @@ static int __init test_sort_init(void)
|
||||
|
||||
sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
|
||||
|
||||
err = -EINVAL;
|
||||
for (i = 0; i < TEST_LEN-1; i++)
|
||||
if (a[i] > a[i+1]) {
|
||||
pr_err("test has failed\n");
|
||||
goto exit;
|
||||
}
|
||||
err = 0;
|
||||
pr_info("test passed\n");
|
||||
exit:
|
||||
kfree(a);
|
||||
return err;
|
||||
KUNIT_ASSERT_LE(test, a[i], a[i + 1]);
|
||||
}
|
||||
|
||||
static void __exit test_sort_exit(void)
|
||||
{
|
||||
}
|
||||
static struct kunit_case sort_test_cases[] = {
|
||||
KUNIT_CASE(test_sort),
|
||||
{}
|
||||
};
|
||||
|
||||
module_init(test_sort_init);
|
||||
module_exit(test_sort_exit);
|
||||
static struct kunit_suite sort_test_suite = {
|
||||
.name = "lib_sort",
|
||||
.test_cases = sort_test_cases,
|
||||
};
|
||||
|
||||
kunit_test_suites(&sort_test_suite);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
+1
-1
@@ -2019,7 +2019,7 @@ static const struct page_flags_fields pff[] = {
|
||||
static
|
||||
char *format_page_flags(char *buf, char *end, unsigned long flags)
|
||||
{
|
||||
unsigned long main_flags = flags & (BIT(NR_PAGEFLAGS) - 1);
|
||||
unsigned long main_flags = flags & PAGEFLAGS_MASK;
|
||||
bool append = false;
|
||||
int i;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user