CVE-2026-64188

net: qualcomm: rmnet: fix endpoint use-after-free in rmnet_dellink()

State
Published
Severity
7.8 High
Published
Jul 20, 2026
Updated
Aug 5, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

net: qualcomm: rmnet: fix endpoint use-after-free in rmnet_dellink()

rmnet_dellink() removes the endpoint from the hash table with hlist_del_init_rcu() and then immediately frees it with kfree(). However, RCU readers on the receive path (rmnet_rx_handler -> __rmnet_map_ingress_handler) may still hold a reference to the endpoint and dereference ep->egress_dev after the memory has been freed. The endpoint is a kmalloc-32 object, and the stale read at offset 8 corresponds to the egress_dev pointer.

BUG: unable to handle page fault for address: ffffffffde942eef Oops: 0002 [#1] SMP NOPTI CPU: 1 UID: 0 PID: 137 Comm: poc_write Not tainted 7.0.0+ #4 PREEMPTLAZY RIP: 0010:rmnet_vnd_rx_fixup (rmnet_vnd.c:27) Call Trace: <TASK> __rmnet_map_ingress_handler (rmnet_handlers.c:48 rmnet_handlers.c:101) rmnet_rx_handler (rmnet_handlers.c:129 rmnet_handlers.c:235) __netif_receive_skb_core.constprop.0 (net/core/dev.c:6096) __netif_receive_skb_one_core (net/core/dev.c:6208) netif_receive_skb (net/core/dev.c:6467) tun_get_user (drivers/net/tun.c:1955) tun_chr_write_iter (drivers/net/tun.c:2003) vfs_write (fs/read_write.c:688) ksys_write (fs/read_write.c:740) </TASK>

Add an rcu_head field to struct rmnet_endpoint and replace kfree() with kfree_rcu() so the endpoint memory remains valid through the RCU grace period. Also remove the rmnet_vnd_dellink() call and inline only the nr_rmnet_devs decrement, since rmnet_vnd_dellink() would set ep->egress_dev to NULL during the grace period, creating a data race with lockless readers.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before c4e676c3505c5058922dc1a6f1ded795f6758135Affected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before 9918698cf3aee4032e12bb42fd5a951dc465339bAffected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before 310b93246bfec7d4452507e0c15477377ed9f025Affected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before 1078ae8175777e80c9637996fb4a46c55f0ce576Affected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before 41e06fcc5df0774d212e70c5b503fc769492bce3Affected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before 8b17adf6d4fb6bf61fa4c3f58366a7c082799a71Affected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before f193e38cb257d033060b63f1cfd94af076b3a2abAffected
  • ceed73a2cf4aff2921802aa3d21d45280677547d to before d00c953a8f69921f484b629801766da68f27f658Affected
LinuxLinux
  • 4.14Affected
  • before 4.14Not affected
  • 5.10.260 through 5.10.*Not affected
  • 5.15.211 through 5.15.*Not affected
  • 6.1.177 through 6.1.*Not affected
  • 6.6.144 through 6.6.*Not affected
  • 6.12.95 through 6.12.*Not affected
  • 6.18.37 through 6.18.*Not affected
  • 7.0.14 through 7.0.*Not affected
  • 7.1 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.