Track vulnerabilities like this one. Sign up free to get alerted when software you use is affected.

Azure kernel 6.6.157.1-1 may cause CPU hogging

published 1 month ago
Summary

The Linux kernel version 6.6.157.1-1 used in Azure can get stuck in a loop, using a lot of CPU when a program checks incoming data without removing it (the MSG_PEEK operation). This happens because the kernel fails to update its internal pointer after handling special out‑of‑band data. Updating the kernel to the latest patched version resolves the issue and prevents the CPU waste.

What to do

The CVE record does not list a fixed version. Check the vendor's site or the advisory links below - a fix may already be released.

Affected software
Ecosystem VendorProductAffected versions
Azure Linux:3 azure kernel <= 6.6.157.1-1
Original advisory text
CVE-2026-97985 affecting package kernel 6.6.157.1-1
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.
Timeline
Published25 Sep 2026
Updated26 Sep 2026
First seen26 Sep 2026
Sources
AZL-104352 · OSV
Track software like this
Free during beta