diff options
| author | Jiacheng Yu <yujiacheng3@huawei.com> | 2026-07-29 12:32:43 +0000 |
|---|---|---|
| committer | Petr Pavlu <petr.pavlu@suse.com> | 2026-08-06 16:44:48 +0200 |
| commit | 3dfaae04243cde460d82dfc2a7dd0bb6664d20ae (patch) | |
| tree | 77e13a4e536f7997e7a2d29011259163de56c06a /scripts | |
| parent | 9a5ff45689329835f874cefe5174e577d141d423 (diff) | |
| download | linux-3dfaae04243cde460d82dfc2a7dd0bb6664d20ae.tar.gz linux-3dfaae04243cde460d82dfc2a7dd0bb6664d20ae.zip | |
params: fix charp corruption on allocation failure
param_set_charp() stores charp parameters in allocated memory after slab is
available, and releases the previous value when the parameter is updated.
The previous value is released before the replacement allocation succeeds.
If kmalloc_parameter() fails, the setter returns -ENOMEM with the parameter
left as NULL.
Failing zswap's compressor update before zswap is initialized can later
trigger:
BUG: kernel NULL pointer dereference, address: 0000000000000000
RIP: 0010:strcmp+0x10/0x30
Call Trace:
zswap_setup+0x3b1/0x490
zswap_enabled_param_set+0x5b/0xa0
param_attr_store+0x93/0xe0
module_attr_store+0x1c/0x30
kernfs_fop_write_iter+0x116/0x1f0
Allocate and copy the replacement first, then replace the parameter value
only after allocation succeeds.
Fixes: e180a6b7759a ("param: fix charp parameters set via sysfs")
Cc: stable@vger.kernel.org
Signed-off-by: Jiacheng Yu <yujiacheng3@huawei.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions
