CVE-2026-97985: af_unix: Update last skb marker in manage_oob().

Published Sep 25, 2026
·
Updated

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

afunix: Update last skb marker in manageoob().

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

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

socketpair(AFUNIX, SOCKSTREAM, 0, sk);

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

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

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

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

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

Let's update @last in manageoob().

For MSGPEEK, @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 manageoob() is inlined and no stack canary is added.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 25, 2026
CVE Published
via MITRE·10:23 AM
Data Sourced
via MITRE·10:23 AM
Description
Data Sourced
via NVD·11:17 AM
Description

Frequently Asked Questions

1

What conditions are needed to trigger the CPU hog?

The issue requires an AF_UNIX SOCK_STREAM socket handling out-of-band data and a blocking recv(MSG_PEEK) call after OOB skb entries have been skipped or consumed. The described cases include a zero-length MSG_PEEK receive and sequences involving MSG_OOB receives.

2

What is the observable impact?

The affected thread can busy-wait for a new skb and hog CPU. This occurs because the data-wait path returns immediately while no data has been copied.

3

How can I tell whether a system is encountering this issue?

Look for CPU consumption by a thread blocked in AF_UNIX stream receive handling, particularly where recv(MSG_PEEK) follows MSG_OOB activity. The reproductions use socketpair(AF_UNIX, SOCK_STREAM, 0, sk) and the specific OOB/peek receive sequences described in the advisory.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203