In the Linux kernel, the following vulnerability has been resolved:
cachefiles: add missing lock protection when polling
Add missing lock protection in poll routine when iterating xarray, otherwise:
Even with RCU read lock held, only the slot of the radix tree is ensured to be pinned there, while the data structure (e.g. struct cachefilesreq) stored in the slot has no such guarantee. The poll routine will iterate the radix tree and dereference cachefilesreq accordingly. Thus RCU read lock is not adequate in this case and spinlock is needed here.
[
{
"signature_type": "Function",
"digest": {
"length": 627.0,
"function_hash": "184878244861387888212726926252414010998"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@97cfd5e20ddc2e33e16ce369626ce76c9a475fd7",
"deprecated": false,
"id": "CVE-2024-42250-1b1821f1",
"signature_version": "v1",
"target": {
"function": "cachefiles_daemon_poll",
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"258835126067175397730063057424968110445",
"3574436359704013495933327538075631530",
"19936587161347021427804735502645196088",
"184107991978088605270294693174711088148",
"265765753249641935423700865154876703677",
"141352027017395034192714273985399530552",
"132474494111937191044628153479474036800",
"258344850940093665697340177530525600461",
"290744507104262420270796076140540387435",
"123758450875303918757563639152466004524",
"217041490440590518286123344618665552142"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@97cfd5e20ddc2e33e16ce369626ce76c9a475fd7",
"deprecated": false,
"id": "CVE-2024-42250-1dca31c3",
"signature_version": "v1",
"target": {
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"258835126067175397730063057424968110445",
"3574436359704013495933327538075631530",
"19936587161347021427804735502645196088",
"184107991978088605270294693174711088148",
"265765753249641935423700865154876703677",
"141352027017395034192714273985399530552",
"132474494111937191044628153479474036800",
"258344850940093665697340177530525600461",
"290744507104262420270796076140540387435",
"123758450875303918757563639152466004524",
"217041490440590518286123344618665552142"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf5bb09e742a9cf6349127e868329a8f69b7a014",
"deprecated": false,
"id": "CVE-2024-42250-2aaf5160",
"signature_version": "v1",
"target": {
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Function",
"digest": {
"length": 627.0,
"function_hash": "184878244861387888212726926252414010998"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8eadcab7f3dd809edbe5ae20533ff843dfea3a07",
"deprecated": false,
"id": "CVE-2024-42250-3a042219",
"signature_version": "v1",
"target": {
"function": "cachefiles_daemon_poll",
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Function",
"digest": {
"length": 627.0,
"function_hash": "184878244861387888212726926252414010998"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bb6bd3dd6f382dfd36220d4b210a0c77c066651",
"deprecated": false,
"id": "CVE-2024-42250-4f1f283c",
"signature_version": "v1",
"target": {
"function": "cachefiles_daemon_poll",
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"258835126067175397730063057424968110445",
"3574436359704013495933327538075631530",
"19936587161347021427804735502645196088",
"184107991978088605270294693174711088148",
"265765753249641935423700865154876703677",
"141352027017395034192714273985399530552",
"132474494111937191044628153479474036800",
"258344850940093665697340177530525600461",
"290744507104262420270796076140540387435",
"123758450875303918757563639152466004524",
"217041490440590518286123344618665552142"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bb6bd3dd6f382dfd36220d4b210a0c77c066651",
"deprecated": false,
"id": "CVE-2024-42250-afc6addd",
"signature_version": "v1",
"target": {
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Line",
"digest": {
"line_hashes": [
"258835126067175397730063057424968110445",
"3574436359704013495933327538075631530",
"19936587161347021427804735502645196088",
"184107991978088605270294693174711088148",
"265765753249641935423700865154876703677",
"141352027017395034192714273985399530552",
"132474494111937191044628153479474036800",
"258344850940093665697340177530525600461",
"290744507104262420270796076140540387435",
"123758450875303918757563639152466004524",
"217041490440590518286123344618665552142"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8eadcab7f3dd809edbe5ae20533ff843dfea3a07",
"deprecated": false,
"id": "CVE-2024-42250-b6cde281",
"signature_version": "v1",
"target": {
"file": "fs/cachefiles/daemon.c"
}
},
{
"signature_type": "Function",
"digest": {
"length": 627.0,
"function_hash": "184878244861387888212726926252414010998"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cf5bb09e742a9cf6349127e868329a8f69b7a014",
"deprecated": false,
"id": "CVE-2024-42250-c5d0a064",
"signature_version": "v1",
"target": {
"function": "cachefiles_daemon_poll",
"file": "fs/cachefiles/daemon.c"
}
}
]