mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
Merge tag 'mm-nonmm-stable-2025-10-02-15-29' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull non-MM updates from Andrew Morton: - "ida: Remove the ida_simple_xxx() API" from Christophe Jaillet completes the removal of this legacy IDR API - "panic: introduce panic status function family" from Jinchao Wang provides a number of cleanups to the panic code and its various helpers, which were rather ad-hoc and scattered all over the place - "tools/delaytop: implement real-time keyboard interaction support" from Fan Yu adds a few nice user-facing usability changes to the delaytop monitoring tool - "efi: Fix EFI boot with kexec handover (KHO)" from Evangelos Petrongonas fixes a panic which was happening with the combination of EFI and KHO - "Squashfs: performance improvement and a sanity check" from Phillip Lougher teaches squashfs's lseek() about SEEK_DATA/SEEK_HOLE. A mere 150x speedup was measured for a well-chosen microbenchmark - plus another 50-odd singleton patches all over the place * tag 'mm-nonmm-stable-2025-10-02-15-29' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (75 commits) Squashfs: reject negative file sizes in squashfs_read_inode() kallsyms: use kmalloc_array() instead of kmalloc() MAINTAINERS: update Sibi Sankar's email address Squashfs: add SEEK_DATA/SEEK_HOLE support Squashfs: add additional inode sanity checking lib/genalloc: fix device leak in of_gen_pool_get() panic: remove CONFIG_PANIC_ON_OOPS_VALUE ocfs2: fix double free in user_cluster_connect() checkpatch: suppress strscpy warnings for userspace tools cramfs: fix incorrect physical page address calculation kernel: prevent prctl(PR_SET_PDEATHSIG) from racing with parent process exit Squashfs: fix uninit-value in squashfs_get_parent kho: only fill kimage if KHO is finalized ocfs2: avoid extra calls to strlen() after ocfs2_sprintf_system_inode_name() kernel/sys.c: fix the racy usage of task_lock(tsk->group_leader) in sys_prlimit64() paths sched/task.h: fix the wrong comment on task_lock() nesting with tasklist_lock coccinelle: platform_no_drv_owner: handle also built-in drivers coccinelle: of_table: handle SPI device ID tables lib/decompress: use designated initializers for struct compress_format efi: support booting with kexec handover (KHO) ...
This commit is contained in:
@@ -1067,12 +1067,6 @@ config PANIC_ON_OOPS
|
||||
|
||||
Say N if unsure.
|
||||
|
||||
config PANIC_ON_OOPS_VALUE
|
||||
int
|
||||
range 0 1
|
||||
default 0 if !PANIC_ON_OOPS
|
||||
default 1 if PANIC_ON_OOPS
|
||||
|
||||
config PANIC_TIMEOUT
|
||||
int "panic timeout"
|
||||
default 0
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seq_buf.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/string_choices.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/kmemleak.h>
|
||||
|
||||
@@ -728,7 +729,7 @@ static int __init setup_early_mem_profiling(char *str)
|
||||
}
|
||||
mem_profiling_support = true;
|
||||
pr_info("Memory allocation profiling is enabled %s compression and is turned %s!\n",
|
||||
compressed ? "with" : "without", enable ? "on" : "off");
|
||||
compressed ? "with" : "without", str_on_off(enable));
|
||||
}
|
||||
|
||||
if (enable != mem_alloc_profiling_enabled()) {
|
||||
|
||||
@@ -653,9 +653,9 @@ int btree_merge(struct btree_head *target, struct btree_head *victim,
|
||||
* walks to remove a single object from the victim.
|
||||
*/
|
||||
for (;;) {
|
||||
if (!btree_last(victim, geo, key))
|
||||
val = btree_last(victim, geo, key);
|
||||
if (!val)
|
||||
break;
|
||||
val = btree_lookup(victim, geo, key);
|
||||
err = btree_insert(target, geo, key, val, gfp);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -49,15 +49,15 @@ struct compress_format {
|
||||
};
|
||||
|
||||
static const struct compress_format compressed_formats[] __initconst = {
|
||||
{ {0x1f, 0x8b}, "gzip", gunzip },
|
||||
{ {0x1f, 0x9e}, "gzip", gunzip },
|
||||
{ {0x42, 0x5a}, "bzip2", bunzip2 },
|
||||
{ {0x5d, 0x00}, "lzma", unlzma },
|
||||
{ {0xfd, 0x37}, "xz", unxz },
|
||||
{ {0x89, 0x4c}, "lzo", unlzo },
|
||||
{ {0x02, 0x21}, "lz4", unlz4 },
|
||||
{ {0x28, 0xb5}, "zstd", unzstd },
|
||||
{ {0, 0}, NULL, NULL }
|
||||
{ .magic = {0x1f, 0x8b}, .name = "gzip", .decompressor = gunzip },
|
||||
{ .magic = {0x1f, 0x9e}, .name = "gzip", .decompressor = gunzip },
|
||||
{ .magic = {0x42, 0x5a}, .name = "bzip2", .decompressor = bunzip2 },
|
||||
{ .magic = {0x5d, 0x00}, .name = "lzma", .decompressor = unlzma },
|
||||
{ .magic = {0xfd, 0x37}, .name = "xz", .decompressor = unxz },
|
||||
{ .magic = {0x89, 0x4c}, .name = "lzo", .decompressor = unlzo },
|
||||
{ .magic = {0x02, 0x21}, .name = "lz4", .decompressor = unlz4 },
|
||||
{ .magic = {0x28, 0xb5}, .name = "zstd", .decompressor = unzstd },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
decompress_fn __init decompress_method(const unsigned char *inbuf, long len,
|
||||
@@ -73,11 +73,10 @@ decompress_fn __init decompress_method(const unsigned char *inbuf, long len,
|
||||
|
||||
pr_debug("Compressed data magic: %#.2x %#.2x\n", inbuf[0], inbuf[1]);
|
||||
|
||||
for (cf = compressed_formats; cf->name; cf++) {
|
||||
for (cf = compressed_formats; cf->name; cf++)
|
||||
if (!memcmp(inbuf, cf->magic, 2))
|
||||
break;
|
||||
|
||||
}
|
||||
if (name)
|
||||
*name = cf->name;
|
||||
return cf->decompressor;
|
||||
|
||||
@@ -159,7 +159,6 @@ static int digsig_verify_rsa(struct key *key,
|
||||
|
||||
len = mlen;
|
||||
head = len - l;
|
||||
memset(out1, 0, head);
|
||||
memcpy(out1 + head, p, l);
|
||||
|
||||
kfree(p);
|
||||
|
||||
@@ -102,7 +102,7 @@ static void __dump_stack(const char *log_lvl)
|
||||
*/
|
||||
asmlinkage __visible void dump_stack_lvl(const char *log_lvl)
|
||||
{
|
||||
bool in_panic = this_cpu_in_panic();
|
||||
bool in_panic = panic_on_this_cpu();
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
|
||||
@@ -22,10 +22,8 @@ static int __init fail_usercopy_debugfs(void)
|
||||
|
||||
dir = fault_create_debugfs_attr("fail_usercopy", NULL,
|
||||
&fail_usercopy.attr);
|
||||
if (IS_ERR(dir))
|
||||
return PTR_ERR(dir);
|
||||
|
||||
return 0;
|
||||
return PTR_ERR_OR_ZERO(dir);
|
||||
}
|
||||
|
||||
late_initcall(fail_usercopy_debugfs);
|
||||
|
||||
@@ -899,8 +899,11 @@ struct gen_pool *of_gen_pool_get(struct device_node *np,
|
||||
if (!name)
|
||||
name = of_node_full_name(np_pool);
|
||||
}
|
||||
if (pdev)
|
||||
if (pdev) {
|
||||
pool = gen_pool_get(&pdev->dev, name);
|
||||
put_device(&pdev->dev);
|
||||
}
|
||||
|
||||
of_node_put(np_pool);
|
||||
|
||||
return pool;
|
||||
|
||||
@@ -75,7 +75,7 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit)
|
||||
struct ref_tracker *tracker;
|
||||
|
||||
stats = kmalloc(struct_size(stats, stacks, limit),
|
||||
GFP_NOWAIT | __GFP_NOWARN);
|
||||
GFP_NOWAIT);
|
||||
if (!stats)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
stats->total = 0;
|
||||
@@ -159,7 +159,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir,
|
||||
return;
|
||||
}
|
||||
|
||||
sbuf = kmalloc(STACK_BUF_SIZE, GFP_NOWAIT | __GFP_NOWARN);
|
||||
sbuf = kmalloc(STACK_BUF_SIZE, GFP_NOWAIT);
|
||||
|
||||
for (i = 0, skipped = stats->total; i < stats->count; ++i) {
|
||||
stack = stats->stacks[i].stack_handle;
|
||||
@@ -306,7 +306,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir,
|
||||
}
|
||||
nr_entries = stack_trace_save(entries, ARRAY_SIZE(entries), 1);
|
||||
stack_handle = stack_depot_save(entries, nr_entries,
|
||||
GFP_NOWAIT | __GFP_NOWARN);
|
||||
GFP_NOWAIT);
|
||||
|
||||
spin_lock_irqsave(&dir->lock, flags);
|
||||
if (tracker->dead) {
|
||||
|
||||
@@ -55,7 +55,7 @@ int sysctl_sys_info_handler(const struct ctl_table *ro_table, int write,
|
||||
void *buffer, size_t *lenp,
|
||||
loff_t *ppos)
|
||||
{
|
||||
char names[sizeof(sys_info_avail) + 1];
|
||||
char names[sizeof(sys_info_avail)];
|
||||
struct ctl_table table;
|
||||
unsigned long *si_bits_global;
|
||||
|
||||
@@ -81,6 +81,7 @@ int sysctl_sys_info_handler(const struct ctl_table *ro_table, int write,
|
||||
char *delim = "";
|
||||
int i, len = 0;
|
||||
|
||||
names[0] = '\0';
|
||||
for (i = 0; i < ARRAY_SIZE(si_names); i++) {
|
||||
if (*si_bits_global & si_names[i].bit) {
|
||||
len += scnprintf(names + len, sizeof(names) - len,
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/efi_embedded_fw.h>
|
||||
#include <linux/string_choices.h>
|
||||
|
||||
MODULE_IMPORT_NS("TEST_FIRMWARE");
|
||||
|
||||
@@ -304,17 +305,17 @@ static ssize_t config_show(struct device *dev,
|
||||
"FW_ACTION_NOUEVENT");
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"into_buf:\t\t%s\n",
|
||||
test_fw_config->into_buf ? "true" : "false");
|
||||
str_true_false(test_fw_config->into_buf));
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"buf_size:\t%zu\n", test_fw_config->buf_size);
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"file_offset:\t%zu\n", test_fw_config->file_offset);
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"partial:\t\t%s\n",
|
||||
test_fw_config->partial ? "true" : "false");
|
||||
str_true_false(test_fw_config->partial));
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"sync_direct:\t\t%s\n",
|
||||
test_fw_config->sync_direct ? "true" : "false");
|
||||
str_true_false(test_fw_config->sync_direct));
|
||||
len += scnprintf(buf + len, PAGE_SIZE - len,
|
||||
"read_fw_idx:\t%u\n", test_fw_config->read_fw_idx);
|
||||
if (test_fw_config->upload_name)
|
||||
|
||||
Reference in New Issue
Block a user