CVE-2026-97985

af_unix: Update last skb marker in manage_oob().

State
Published
Severity
Not scored
Published
Sep 25, 2026
Updated
Oct 21, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

af_unix: Update last skb marker in manage_oob().

Fahad Alharbi reported that blocking recv(MSG_PEEK) could hog CPU due to OOB skb.

In the following cases, manage_oob() skips OOB skb(s) and returns NULL for the last recv(MSG_PEEK):

socketpair(AF_UNIX, SOCK_STREAM, 0, sk);

1) skb -> OOB skb -> NULL send(sk[0], "ab", 2, MSG_OOB); recv(sk[1], buf, 0, MSG_PEEK);

2) skb -> consumed OOB skb -> NULL send(sk[0], "ab", 2, MSG_OOB); recv(sk[1], buf, 1, MSG_OOB); recv(sk[1], buf, 0, MSG_PEEK);

3) consumed OOB skb -> OOB skb -> NULL send(sk[0], "a", 1, MSG_OOB); recv(sk[1], buf, 0, MSG_OOB); send(sk[0], "b", 1, MSG_OOB); recv(sk[1], buf, 1, MSG_PEEK);

Then, @copied is 0 in unix_stream_read_generic() (zero-length buffer, or non-OOB skb is not yet consumed), and unix_stream_data_wait() is called.

However, it returns immediately because @last is not updated in unix_stream_read_generic(), and the thread busy-waits for a new skb.

Let's update @last in manage_oob().

For MSG_PEEK, @last is updated with the skipped OOB, and for the non-peek case, @last matches the returned value (when !copied) because OOB is unlinked.

Note that manage_oob() is inlined and no stack canary is added.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 022d81a709cd553bbe2db8675f8e824f4aee6284 to before bd91dc313afe21e9d6b31ca6a47606a33ca5e35cAffected
  • 22dd70eb2c3d754862964377a75abafd3167346b to before 0630bfc773d85ac44da05b2c5a037dbbd39301abAffected
  • 22dd70eb2c3d754862964377a75abafd3167346b to before f1816b3d7ce80dcf086bb68ff5ae6e09520ca1faAffected
  • 22dd70eb2c3d754862964377a75abafd3167346b to before fc62a26493a98a0424d9dae2eb92a1daa1321f65Affected
  • 22dd70eb2c3d754862964377a75abafd3167346b to before 94fd4debd2e3a69cf93e766c8b328a810c228119Affected
  • ae3f9e1221b31b18dbd4c4b85d08574996bbd973Affected
  • ba0db4638525b8b054b3d546b45f7e473f477027Affected
  • 16dc252e7007547a7b72a2c21022ef81fb45e6a3Affected
  • 6.6.29 to before 6.6.160Affected
  • 5.15.157 to before 5.16Affected
  • 6.1.88 to before 6.2Affected
  • 6.8.8 to before 6.9Affected
LinuxLinux
  • 6.9Affected
  • before 6.9Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.111 through 6.12.*Not affected
  • 6.18.53 through 6.18.*Not affected
  • 7.2.7 through 7.2.*Not affected
  • 7.3 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.