CVE-2026-89552
Full vulnerability record from the local CVENow database.
Description
In the Linux kernel, the following vulnerability has been resolved: 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.
View original CVE JSON
{
"id": "CVE-2026-89552",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2026-09-11T20:19:38.760",
"lastModified": "2026-10-30T13:20:21.423",
"vulnStatus": "Received",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nparams: fix charp corruption on allocation failure\n\nparam_set_charp() stores charp parameters in allocated memory after slab is\navailable, and releases the previous value when the parameter is updated.\n\nThe previous value is released before the replacement allocation succeeds.\nIf kmalloc_parameter() fails, the setter returns -ENOMEM with the parameter\nleft as NULL.\n\nFailing zswap's compressor update before zswap is initialized can later\ntrigger:\n\n BUG: kernel NULL pointer dereference, address: 0000000000000000\n RIP: 0010:strcmp+0x10/0x30\n Call Trace:\n zswap_setup+0x3b1/0x490\n zswap_enabled_param_set+0x5b/0xa0\n param_attr_store+0x93/0xe0\n module_attr_store+0x1c/0x30\n kernfs_fop_write_iter+0x116/0x1f0\n\nAllocate and copy the replacement first, then replace the parameter value\nonly after allocation succeeds."
}
],
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "unaffected",
"programFiles": [
"kernel/params.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "72835d539ed3eb4c4b85b85a3f3976c7bdc70b91",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "c7cc1edf3c0de948abcb3e4a44ee86a82403ce2f",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "32c1f305cfad192cd98468140beedeffe4792f53",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "31b41ea8383d51992d6b0dfe3a99da1dec8ce1c1",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "614f873268c5b172804c9af6639bd17b7e1e2359",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "704ecd010d4a9b33160e40b74eb402f6b86a18e0",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "0d8e2404925a0607ffec79a53170715a46936896",
"versionType": "git",
"status": "affected"
},
{
"version": "e180a6b7759a99a28cbcce3547c4c80822cb6c2a",
"lessThan": "3dfaae04243cde460d82dfc2a7dd0bb6664d20ae",
"versionType": "git",
"status": "affected"
}
]
},
{
"vendor": "Linux",
"product": "Linux",
"defaultStatus": "affected",
"programFiles": [
"kernel/params.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"versions": [
{
"version": "2.6.30",
"status": "affected"
},
{
"version": "0",
"lessThan": "2.6.30",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "5.10.273",
"lessThanOrEqual": "5.10.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "5.15.224",
"lessThanOrEqual": "5.15.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.1.191",
"lessThanOrEqual": "6.1.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.6.160",
"lessThanOrEqual": "6.6.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.12.109",
"lessThanOrEqual": "6.12.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "6.18.50",
"lessThanOrEqual": "6.18.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.2.4",
"lessThanOrEqual": "7.2.*",
"versionType": "semver",
"status": "unaffected"
},
{
"version": "7.3",
"lessThanOrEqual": "*",
"versionType": "original_commit_for_fix",
"status": "unaffected"
}
]
}
]
}
],
"metrics": {},
"references": [
{
"url": "https://git.kernel.org/stable/c/0d8e2404925a0607ffec79a53170715a46936896",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/31b41ea8383d51992d6b0dfe3a99da1dec8ce1c1",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/32c1f305cfad192cd98468140beedeffe4792f53",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/3dfaae04243cde460d82dfc2a7dd0bb6664d20ae",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/614f873268c5b172804c9af6639bd17b7e1e2359",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/704ecd010d4a9b33160e40b74eb402f6b86a18e0",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/72835d539ed3eb4c4b85b85a3f3976c7bdc70b91",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/c7cc1edf3c0de948abcb3e4a44ee86a82403ce2f",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
]
}