CVE-2026-46242: eventpoll: fix ep_remove struct eventpoll / struct file UAF
In the Linux kernel, the following vulnerability has been resolved:
eventpoll: fix epremove struct eventpoll / struct file UAF
epremove() (via epremovefile()) cleared file->fep under file->flock but then kept using @file inside the critical section (isfileepoll(), hlistdelrcu() through the head, spinunlock). A concurrent fput() taking the eventpollrelease() fastpath in that window observed the transient NULL, skipped eventpollreleasefile() and ran to fop->release / filefree().
For the epoll-watches-epoll case, fop->release is epeventpollrelease() -> epclearandput() -> epfree(), which kfree()s the watched struct eventpoll. Its embedded ->refs hlisthead is exactly where epi->fllink.pprev points, so the subsequent hlistdelrcu()'s "pprev = next" scribbles into freed kmalloc-192 memory.
In addition, struct file is SLABTYPESAFEBYRCU, so the slot backing @file could be recycled by allocemptyfile() -- reinitializing flock and fep -- while epremove() is still nominally inside that lock. The upshot is an attacker-controllable kmemcachefree() against the wrong slab cache.
Pin @file via epifget() at the top of epremove() and gate the critical section on the pin succeeding. With the pin held @file cannot reach refcount zero, which holds fput() off and transitively keeps the watched struct eventpoll alive across the hlistdelrcu() and the flock use, closing both UAFs.
If the pin fails @file has already reached refcount zero and its fput() is in flight. Because we bailed before clearing fep, that path takes the eventpollrelease() slow path into eventpollreleasefile() and blocks on ep->mtx until the waiter side's epclearandput() drops it. The bailed epi's share of ep->refcount stays intact, so the trailing eprefcountdecandtest() in epclearandput() cannot free the eventpoll out from under eventpollreleasefile(); the orphaned epi is then cleaned up there.
A successful pin also proves we are not racing eventpollreleasefile() on this epi, so drop the now-redundant re-check of epi->dying under flock. The cheap lockless READONCE(epi->dying) fast-path bailout stays.
Affected Software
Event History
Peer vulnerabilities
Found alongside the following vulnerabilities.
- CVE-2026-49746
- CVE-2026-45204
- CVE-2026-49745
- CVE-2026-34196
- CVE-2026-7639
- CVE-2026-13855
- CVE-2026-14432
- CVE-2026-14431
- CVE-2026-13854
- CVE-2026-13853
- CVE-2026-14429
- CVE-2026-14427
- CVE-2026-14156
- CVE-2026-14155
- CVE-2026-14024
- CVE-2026-14426
- CVE-2026-14023
- CVE-2026-13786
- CVE-2026-14425
- CVE-2026-14022
- CVE-2026-14154
- CVE-2026-14021
- CVE-2026-14153
- CVE-2026-14020
- CVE-2026-14152
- CVE-2026-14423
- CVE-2026-14019
- CVE-2026-14151
- CVE-2026-14150
- CVE-2026-13848
- CVE-2026-14017
- CVE-2026-14016
- CVE-2026-14014
- CVE-2026-14013
- CVE-2026-14012
- CVE-2026-14421
- CVE-2026-14420
- CVE-2026-14419
- CVE-2026-13784
- CVE-2026-13783
- CVE-2026-14011
- CVE-2026-13845
- CVE-2026-13842
- CVE-2026-14418
- CVE-2026-14009
- CVE-2026-14008
- CVE-2026-13782
- CVE-2026-14417
- CVE-2026-13781
- CVE-2026-14007
- CVE-2026-13841
- CVE-2026-14416
- CVE-2026-14148
- CVE-2026-14149
- CVE-2026-14006
- CVE-2026-14415
- CVE-2026-13780
- CVE-2026-14147
- CVE-2026-13840
- CVE-2026-14146
- CVE-2026-14004
- CVE-2026-14003
- CVE-2026-14002
- CVE-2026-14145
- CVE-2026-14001
- CVE-2026-14000
- CVE-2026-13839
- CVE-2026-13838
- CVE-2026-13837
- CVE-2026-13836
- CVE-2026-13835
- CVE-2026-14144
- CVE-2026-14142
- CVE-2026-14139
- CVE-2026-13999
- CVE-2026-13996
- CVE-2026-13993
- CVE-2026-14135
- CVE-2026-13989
- CVE-2026-13988
- CVE-2026-14133
- CVE-2026-14132
- CVE-2026-14131
- CVE-2026-13986
- CVE-2026-14130
- CVE-2026-13985
- CVE-2026-14127
- CVE-2026-13984
- CVE-2026-13982
- CVE-2026-13979
- CVE-2026-14414
- CVE-2026-13834
- CVE-2026-14413
- CVE-2026-14412
- CVE-2026-14411
- CVE-2026-14125
- CVE-2026-13978
- CVE-2026-13977
- CVE-2026-13976
- CVE-2026-14408
- CVE-2026-14410
- CVE-2026-14409
- CVE-2026-13973
- CVE-2026-13832
- CVE-2026-13972
- CVE-2026-14121
- CVE-2026-13831
- CVE-2026-13971
- CVE-2026-13970
- CVE-2026-14120
- CVE-2026-14118
- CVE-2026-13968
- CVE-2026-13967
- CVE-2026-14116
- CVE-2026-14115
- CVE-2026-13966
- CVE-2026-13965
- CVE-2026-13963
- CVE-2026-13830
- CVE-2026-13962
- CVE-2026-13960
- CVE-2026-14112
- CVE-2026-14111
- CVE-2026-14110
- CVE-2026-14109
- CVE-2026-14108
- CVE-2026-13959
- CVE-2026-14407
- CVE-2026-13957
- CVE-2026-14107
- CVE-2026-14105
- CVE-2026-13956
- CVE-2026-13954
- CVE-2026-14104
- CVE-2026-14103
- CVE-2026-13953
- CVE-2026-14102
- CVE-2026-14406
- CVE-2026-13952
- CVE-2026-13828
- CVE-2026-13951
- CVE-2026-14100
- CVE-2026-14098
- CVE-2026-14405
- CVE-2026-13950
- CVE-2026-14404
- CVE-2026-14403
- CVE-2026-13948
- CVE-2026-14095
- CVE-2026-14093
- CVE-2026-13945
- CVE-2026-13779
- CVE-2026-14092
- CVE-2026-14091
- CVE-2026-14090
- CVE-2026-14089
- CVE-2026-13942
- CVE-2026-13824
- CVE-2026-14086
- CVE-2026-13823
- CVE-2026-13940
- CVE-2026-14085
- CVE-2026-13938
- CVE-2026-13821
- CVE-2026-14084
- CVE-2026-14083
- CVE-2026-14401
- CVE-2026-14082
- CVE-2026-13937
- CVE-2026-14081
- CVE-2026-13776
- CVE-2026-13935
- CVE-2026-13934
- CVE-2026-14399
- CVE-2026-13933
- CVE-2026-14398
- CVE-2026-13820
- CVE-2026-14079
- CVE-2026-14078
- CVE-2026-13930
- CVE-2026-13928
- CVE-2026-13818
- CVE-2026-14076
- CVE-2026-13775
- CVE-2026-13922
- CVE-2026-13817
- CVE-2026-13921
- CVE-2026-13815
- CVE-2026-13814
- CVE-2026-14395
- CVE-2026-14394
- CVE-2026-14393
- CVE-2026-13919
- CVE-2026-13793
- CVE-2026-14026
- CVE-2026-14072
- CVE-2026-13911
- CVE-2026-14073
- CVE-2026-13858
- CVE-2026-13774
- CVE-2026-13811
- CVE-2026-14071
- CVE-2026-13909
- CVE-2026-14070
- CVE-2026-14069
- CVE-2026-13906
- CVE-2026-13810
- CVE-2026-13903
- CVE-2026-14065
- CVE-2026-13901
- CVE-2026-13806
- CVE-2026-14390
- CVE-2026-14063
- CVE-2026-14062
- CVE-2026-14061
- CVE-2026-13900
- CVE-2026-14059
- CVE-2026-14058
- CVE-2026-14057
- CVE-2026-13899
- CVE-2026-13898
- CVE-2026-14056
- CVE-2026-13897
- CVE-2026-13804
- CVE-2026-14054
- CVE-2026-14053
- CVE-2026-13896
- CVE-2026-14052
- CVE-2026-13895
- CVE-2026-13894
- CVE-2026-13893
- CVE-2026-14050
- CVE-2026-14049
- CVE-2026-13891
- CVE-2026-13802
- CVE-2026-13890
- CVE-2026-13801
- CVE-2026-13888
- CVE-2026-14389
- CVE-2026-14388
- CVE-2026-13886
- CVE-2026-14387
- CVE-2026-13884
- CVE-2026-13883
- CVE-2026-13799
- CVE-2026-14048
- CVE-2026-13882
- CVE-2026-13881
- CVE-2026-13798
- CVE-2026-13797
- CVE-2026-13879
- CVE-2026-14047
- CVE-2026-13877
- CVE-2026-13876
- CVE-2026-13874
- CVE-2026-13873
- CVE-2026-13871
- CVE-2026-14045
- CVE-2026-14044
- CVE-2026-14043
- CVE-2026-14042
- CVE-2026-14041
- CVE-2026-14040
- CVE-2026-14039
- CVE-2026-13867
- CVE-2026-14038
- CVE-2026-13865
- CVE-2026-14037
- CVE-2026-14036
- CVE-2026-13864
- CVE-2026-14035
- CVE-2026-14031
- CVE-2026-13861
- CVE-2026-14383
- CVE-2026-13796
- CVE-2026-14030
- CVE-2026-13857
- CVE-2026-13790
- CVE-2026-13860
- CVE-2026-15132
- CVE-2026-15133
- CVE-2026-15131
- CVE-2026-15130
- CVE-2026-15129
- CVE-2026-15128
- CVE-2026-15127
- CVE-2026-15126
- CVE-2026-15125
- CVE-2026-15124
- CVE-2026-15123
- CVE-2026-15121
- CVE-2026-15119
- CVE-2026-15118
- CVE-2026-15117
- CVE-2026-15116
- CVE-2026-15114
- CVE-2026-15112
- CVE-2026-15111
- CVE-2026-15109
- CVE-2026-15108
- CVE-2026-15107
- CVE-2026-15777
- CVE-2026-15776
- CVE-2026-15775
- CVE-2026-15774
- CVE-2026-15772
- CVE-2026-15770
- CVE-2026-15769
- CVE-2026-15765
- CVE-2026-15768
- CVE-2026-15764
- CVE-2026-15767
- CVE-2026-15766
- CVE-2026-15778
Frequently Asked Questions
What is the severity of CVE-2026-46242?
CVE-2026-46242 has a severity rating of 75 indicating a high risk level.
How do I fix CVE-2026-46242?
To address CVE-2026-46242, update to the latest version of the Linux kernel where the vulnerability has been patched.
What impact does CVE-2026-46242 have on my Linux system?
CVE-2026-46242 could potentially allow an uninitialized memory access leading to a denial of service or escalation of privileges.
Are all versions of the Linux kernel affected by CVE-2026-46242?
Only specific versions of the Linux kernel prior to the patch release are affected by CVE-2026-46242.
What components are involved in CVE-2026-46242?
CVE-2026-46242 involves the eventpoll component of the Linux kernel and can lead to use-after-free conditions.