summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorJiacheng Yu <yujiacheng3@huawei.com>2026-07-29 12:32:43 +0000
committerPetr Pavlu <petr.pavlu@suse.com>2026-08-06 16:44:48 +0200
commit3dfaae04243cde460d82dfc2a7dd0bb6664d20ae (patch)
tree77e13a4e536f7997e7a2d29011259163de56c06a /scripts
parent9a5ff45689329835f874cefe5174e577d141d423 (diff)
downloadlinux-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