In the Linux kernel, the following vulnerability has been resolved:
clocksource: hyper-v: unexport __init-annotated hvinitclocksource()
EXPORT_SYMBOL and __init is a bad combination because the .init.text section is freed up after the initialization. Hence, modules cannot use symbols annotated __init. The access to a freed symbol may end up with kernel panic.
modpost used to detect it, but it has been broken for a decade.
Recently, I fixed modpost so it started to warn it again, then this showed up in linux-next builds.
There are two ways to fix it:
I chose the latter for this case because the only in-tree call-site, arch/x86/kernel/cpu/mshyperv.c is never compiled as modular. (CONFIGHYPERVISORGUEST is boolean)
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49726.json",
"cna_assigner": "Linux"
}[
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/clocksource/hyperv_timer.c"
},
"id": "CVE-2022-49726-20ce5798",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cff3a7ce6e81418b6e8bac941779bbf5d342d626",
"digest": {
"line_hashes": [
"296085335861925807638886786600994579334"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/clocksource/hyperv_timer.c"
},
"id": "CVE-2022-49726-78ad406f",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@db965e2757d95f695e606856418cd84003dd036d",
"digest": {
"line_hashes": [
"214405160402756559653184868252624223237"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/clocksource/hyperv_timer.c"
},
"id": "CVE-2022-49726-89d8b120",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0414eab7c78f3518143d383e448d44fc573ac6d2",
"digest": {
"line_hashes": [
"214405160402756559653184868252624223237"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/clocksource/hyperv_timer.c"
},
"id": "CVE-2022-49726-c4cc8f5d",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@937fcbb55a1e48a6422e87e8f49422c92265f102",
"digest": {
"line_hashes": [
"214405160402756559653184868252624223237"
],
"threshold": 0.9
}
},
{
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/clocksource/hyperv_timer.c"
},
"id": "CVE-2022-49726-ead66946",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@245b993d8f6c4e25f19191edfbd8080b645e12b1",
"digest": {
"line_hashes": [
"214405160402756559653184868252624223237"
],
"threshold": 0.9
}
}
]
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49726.json"