posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu()
In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu() update_rlimit_cpu() converts the RLIMIT_CPU value to nanoseconds with u64 nsecs = rlim_new * NSEC_PER_SEC; On 32-bit kernels both rlim_new (unsigned long) and NSEC_PER_SEC (1000000000L) are 32-bit, so the multiplication is performed in unsigned long and truncated for rlim_new > 4 seconds before being widened to u64. The same file already casts to u64 for the matching computation in check_process_timers(): u64 softns = (u64)soft * NSEC_PER_SEC; As a result, the truncated value is installed into the CPUCLOCK_PROF expiry cache (nextevt), causing the process CPU timer to be programmed to fire prematurely for any RLIMIT_CPU soft limit >= 5 seconds. The actual SIGXCPU/SIGKILL decision in check_process_timers() already casts to u64 and is therefore correct, so limit enforcement is not broken; only the expiry-cache programming is wrong. Apply the same cast here so both paths convert rlim_cur identically. 64-bit kernels are unaffected.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.261, 5.15.212, 6.1.178, 6.12.97, 6.18.40, 6.6.145, 7.1.5
- CVEs
- CVE-2026-72068
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 13:31 UTC · Revision 1
Source evidence
posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu()
core-osv · Original sourcePublished 15 Aug 2026, 05:52 UTC
In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu() update_rlimit_cpu() converts the RLIMIT_CPU value to nanoseconds with u64 nsecs = rlim_new * NSEC_PER_SEC; On 32-bit kernels both rlim_new (unsigned long) and NSEC_PER_SEC (1000000000L) are 32-bit, so the multiplication is performed in unsigned long and truncated for rlim_new > 4 seconds before being widened to u64. The same file already casts to u64 for the matching computation in check_process_timers(): u64 softns = (u64)soft * NSEC_PER_SEC; As a result, the truncated value is installed into the CPUCLOCK_PROF expiry cache (nextevt), causing the process CPU timer to be programmed to fire prematurely for any RLIMIT_CPU soft limit >= 5 seconds. The actual SIGXCPU/SIGKILL decision in check_process_timers() already casts to u64 and is therefore correct, so limit enforcement is not broken; only the expiry-cache programming is wrong. Apply the same cast here so both paths convert rlim_cur identically. 64-bit kernels are unaffected.
osv:CVE-2026-72068
Kernel
Fixed versions: 5.10.261, 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.40, 7.1.5
Complete source record
{
"id": "99b55644334274a2c8b95b3eb7ed9a7698a8c79f397aa2639352b620683920e5",
"url": "https://osv.dev/vulnerability/CVE-2026-72068",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu()",
"summary": "In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: Use u64 multiplication in update_rlimit_cpu() update_rlimit_cpu() converts the RLIMIT_CPU value to nanoseconds with u64 nsecs = rlim_new * NSEC_PER_SEC; On 32-bit kernels both rlim_new (unsigned long) and NSEC_PER_SEC (1000000000L) are 32-bit, so the multiplication is performed in unsigned long and truncated for rlim_new > 4 seconds before being widened to u64. The same file already casts to u64 for the matching computation in check_process_timers(): u64 softns = (u64)soft * NSEC_PER_SEC; As a result, the truncated value is installed into the CPUCLOCK_PROF expiry cache (nextevt), causing the process CPU timer to be programmed to fire prematurely for any RLIMIT_CPU soft limit >= 5 seconds. The actual SIGXCPU/SIGKILL decision in check_process_timers() already casts to u64 and is therefore correct, so limit enforcement is not broken; only the expiry-cache programming is wrong. Apply the same cast here so both paths convert rlim_cur identically. 64-bit kernels are unaffected.",
"evidence": "osv:CVE-2026-72068",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.261",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.212",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.178",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.145",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.97",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.40",
"evidence": "/affected/1/ranges"
},
{
"value": "7.1.5",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-72068",
"aliases": [
"CVE-2026-72068"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "858cf3a8c59968e7c5f7c1a1192459a0d52d1ab4"
},
{
"fixed": "feb5c87c8514444ba891b75a5a3eae57c64edaf8"
},
{
"fixed": "384628d6cdde0fcd76868606fad3ad8293100afb"
},
{
"fixed": "1fafc4d9b411645eb34de43362b966dc8fb3e263"
},
{
"fixed": "cff8281bacd2866767e6194c3079d33b6c5a74f4"
},
{
"fixed": "edf6babb9edd2d3e19229ade339081f439d4f478"
},
{
"fixed": "ea6a188ee805e841a0e242f14d15953e0dfa74bb"
},
{
"fixed": "571e1f10b5996ba3e4dc63ea77de4aa309c384ce"
},
{
"fixed": "26aff38fefb1d6cd87e22525f41cc8f1aa61b24f"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72068.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.11.0"
},
{
"fixed": "5.10.261"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.212"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.178"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.145"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.97"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.40"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.1.5"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72068.json"
}
}
],
"modified": "2026-10-28T02:30:29.007848346Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/1fafc4d9b411645eb34de43362b966dc8fb3e263",
"https://git.kernel.org/stable/c/26aff38fefb1d6cd87e22525f41cc8f1aa61b24f",
"https://git.kernel.org/stable/c/384628d6cdde0fcd76868606fad3ad8293100afb",
"https://git.kernel.org/stable/c/571e1f10b5996ba3e4dc63ea77de4aa309c384ce",
"https://git.kernel.org/stable/c/cff8281bacd2866767e6194c3079d33b6c5a74f4",
"https://git.kernel.org/stable/c/ea6a188ee805e841a0e242f14d15953e0dfa74bb",
"https://git.kernel.org/stable/c/edf6babb9edd2d3e19229ade339081f439d4f478",
"https://git.kernel.org/stable/c/feb5c87c8514444ba891b75a5a3eae57c64edaf8",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72068.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-72068",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72068.json"
}
},
"related_cves": [
{
"value": "CVE-2026-72068",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 495911,
"published_at": "2026-08-15T05:52:21.007+00:00"
}