In the Linux kernel, the following vulnerability has been resolved:
tick/broadcast: Move per CPU pointer access into the atomic section
The recent fix for making the take over of the broadcast timer more
reliable retrieves a per CPU pointer in preemptible context.
This went unnoticed as compilers hoist the access into the non-preemptible
region where the pointer is actually used. But of course it’s valid that
the compiler keeps it at the place where the code puts it which rightfully
triggers:
BUG: using smp_processor_id() in preemptible [00000000] code:
caller is hotplug_cpu__broadcast_tick_pull+0x1c/0xc0
Move it to the actual usage site which is in a non-preemptible region.
Vendor | Product | Version | CPE |
---|---|---|---|
linux | linux_kernel | * | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
[
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"kernel/time/tick-broadcast.c"
],
"versions": [
{
"version": "dfe19aa91378",
"lessThan": "f54abf332a2b",
"status": "affected",
"versionType": "git"
},
{
"version": "457a1c87d454",
"lessThan": "f91fb47ecacc",
"status": "affected",
"versionType": "git"
},
{
"version": "9ef719022814",
"lessThan": "668c6c4a7e9e",
"status": "affected",
"versionType": "git"
},
{
"version": "d3b165c10473",
"lessThan": "541a900d2455",
"status": "affected",
"versionType": "git"
},
{
"version": "408bfb6b0a7f",
"lessThan": "7b3ec186ba93",
"status": "affected",
"versionType": "git"
},
{
"version": "3a58c590f6bd",
"lessThan": "b9d604933d5f",
"status": "affected",
"versionType": "git"
},
{
"version": "2cdab4b4bf77",
"lessThan": "7dd12f85f150",
"status": "affected",
"versionType": "git"
},
{
"version": "f7d43dd206e7",
"lessThan": "6881e75237a8",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"kernel/time/tick-broadcast.c"
],
"versions": [
{
"version": "6.1.103",
"lessThan": "6.1.105",
"status": "affected",
"versionType": "custom"
},
{
"version": "6.6.44",
"lessThan": "6.6.46",
"status": "affected",
"versionType": "custom"
},
{
"version": "6.10.3",
"lessThan": "6.10.5",
"status": "affected",
"versionType": "custom"
}
]
}
]
git.kernel.org/stable/c/541a900d245536d4809cb1aa322c3fcc2cdb58a6
git.kernel.org/stable/c/668c6c4a7e9e9f081c06b70f30104fb7013437ed
git.kernel.org/stable/c/6881e75237a84093d0986f56223db3724619f26e
git.kernel.org/stable/c/7b3ec186ba93e333e9efe7254e7e31c1828e5d2d
git.kernel.org/stable/c/7dd12f85f150010ef7518201c63fa7e395f5c3e9
git.kernel.org/stable/c/b9d604933d5fd72dd37f24e1dc35f778297d745a
git.kernel.org/stable/c/f54abf332a2bc0413cfa8bd6a8511f7aa99faea0
git.kernel.org/stable/c/f91fb47ecacc178a83a77eeebd25cbaec18c01d6