In the Linux kernel, the following vulnerability has been resolved:
cachestat: do not flush stats in recency check
syzbot detects that cachestat() is flushing stats, which can sleep, in its RCU read section (see [1]). This is done in the workingsettestrecent() step (which checks if the folio's eviction is recent).
Move the stat flushing step to before the RCU read section of cachestat, and skip stat flushing during the recency check.
[
{
"target": {
"file": "include/linux/swap.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"263112196865975570428967563465295001863",
"32112980518803155247763880164970608469",
"112135754430349557140731695389975777808",
"245277995472849319687358957887099416784"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-17ac8281"
},
{
"target": {
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"68355418437558734201174920460929422633",
"109035222938614516387822392133200250324",
"309504913944000104485341507920856598015",
"191969598850755088449181595221670999178",
"273108610351956680011751042912122195760",
"10877200940396305921344596011252451662",
"179367770087247309533704651164114603674"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-17d886d5"
},
{
"target": {
"function": "workingset_refault",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "106433157153541399521479561113645179322"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-24201e93"
},
{
"target": {
"function": "filemap_cachestat",
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"length": 1181.0,
"function_hash": "91291085173096601236198446538432066474"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-25b56ccf"
},
{
"target": {
"function": "workingset_test_recent",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 959.0,
"function_hash": "129925435732369598456160346567422058052"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-2d97fe2b"
},
{
"target": {
"function": "workingset_test_recent",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 959.0,
"function_hash": "129925435732369598456160346567422058052"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-3d0eff99"
},
{
"target": {
"file": "include/linux/swap.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"263112196865975570428967563465295001863",
"32112980518803155247763880164970608469",
"112135754430349557140731695389975777808",
"245277995472849319687358957887099416784"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-3d16cd42"
},
{
"target": {
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"250475259685655701899033680724241191962",
"150050991433702779397224400718929411401",
"143879647046089371356954193043630055535",
"142606950589751445254017409019804660548",
"125867994721776810593608927286439547699",
"43615425754828228369581962314001216348",
"79761092759794361837466411661208019012",
"190898036453173377799767427154380848631",
"30701280616498046215637828013716711682",
"299799306643347874375345793252665186800",
"245841405720006825574869565033403221813",
"302749071818715915891824801550143929059"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-51282acd"
},
{
"target": {
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"68355418437558734201174920460929422633",
"109035222938614516387822392133200250324",
"309504913944000104485341507920856598015",
"191969598850755088449181595221670999178",
"273108610351956680011751042912122195760",
"10877200940396305921344596011252451662",
"179367770087247309533704651164114603674"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-66bc1f14"
},
{
"target": {
"function": "filemap_cachestat",
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"length": 1181.0,
"function_hash": "91291085173096601236198446538432066474"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-68223d9b"
},
{
"target": {
"function": "workingset_refault",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "106433157153541399521479561113645179322"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-821325c0"
},
{
"target": {
"function": "filemap_cachestat",
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"length": 1181.0,
"function_hash": "91291085173096601236198446538432066474"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-975a4354"
},
{
"target": {
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"250475259685655701899033680724241191962",
"150050991433702779397224400718929411401",
"143879647046089371356954193043630055535",
"142606950589751445254017409019804660548",
"125867994721776810593608927286439547699",
"43615425754828228369581962314001216348",
"79761092759794361837466411661208019012",
"190898036453173377799767427154380848631",
"30701280616498046215637828013716711682",
"299799306643347874375345793252665186800",
"245841405720006825574869565033403221813",
"302749071818715915891824801550143929059"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-9928e73f"
},
{
"target": {
"file": "mm/filemap.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"68355418437558734201174920460929422633",
"109035222938614516387822392133200250324",
"309504913944000104485341507920856598015",
"191969598850755088449181595221670999178",
"273108610351956680011751042912122195760",
"10877200940396305921344596011252451662",
"179367770087247309533704651164114603674"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-a0e6be0c"
},
{
"target": {
"function": "workingset_refault",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 695.0,
"function_hash": "106433157153541399521479561113645179322"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e2f7c76758be16f1dc32c5a82270d4f6649eedab",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-dfc76d99"
},
{
"target": {
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"250475259685655701899033680724241191962",
"150050991433702779397224400718929411401",
"143879647046089371356954193043630055535",
"142606950589751445254017409019804660548",
"125867994721776810593608927286439547699",
"43615425754828228369581962314001216348",
"79761092759794361837466411661208019012",
"190898036453173377799767427154380848631",
"30701280616498046215637828013716711682",
"299799306643347874375345793252665186800",
"245841405720006825574869565033403221813",
"302749071818715915891824801550143929059"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a4d8944d6b1e1aaaa83ea42c116b520b4ed0394",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-eedd57f9"
},
{
"target": {
"function": "workingset_test_recent",
"file": "mm/workingset.c"
},
"signature_version": "v1",
"digest": {
"length": 959.0,
"function_hash": "129925435732369598456160346567422058052"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Function",
"id": "CVE-2024-41033-f5ea2d33"
},
{
"target": {
"file": "include/linux/swap.h"
},
"signature_version": "v1",
"digest": {
"line_hashes": [
"263112196865975570428967563465295001863",
"32112980518803155247763880164970608469",
"112135754430349557140731695389975777808",
"245277995472849319687358957887099416784"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1d1ba14e00d290b1ed616ed78c8c49bf897ce390",
"deprecated": false,
"signature_type": "Line",
"id": "CVE-2024-41033-f61b32e1"
}
]