Bug 2532218 (CVE-2026-89530) - CVE-2026-89530 kernel: svcrdma: Reject inline replies that overflow the pull-up buffer
Summary: CVE-2026-89530 kernel: svcrdma: Reject inline replies that overflow the pull-...
Keywords:
Status: NEW
Alias: CVE-2026-89530
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-09-11 21:27 UTC by OSIDB Bzimport
Modified: 2026-10-08 10:52 UTC (History)
17 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2026:77498 0 None None None 2026-10-07 18:52:12 UTC
Red Hat Product Errata RHSA-2026:77500 0 None None None 2026-10-07 11:22:01 UTC
Red Hat Product Errata RHSA-2026:77689 0 None None None 2026-10-08 10:52:01 UTC
Red Hat Product Errata RHSA-2026:77690 0 None None None 2026-10-08 09:52:33 UTC

Description OSIDB Bzimport 2026-09-11 21:27:40 UTC
In the Linux kernel, the following vulnerability has been resolved:

svcrdma: Reject inline replies that overflow the pull-up buffer

An RPC-over-RDMA client can request a reply, such as an NFS READ
payload, without providing a Write list or a Reply chunk to carry
it. When such a reply needs more scatter/gather entries than the
device's Send Queue supports, svc_rdma_pull_up_needed() selects
pull-up and svc_rdma_pull_up_reply_msg() linearizes the whole
reply into sctxt->sc_xprt_buf. That buffer is only sc_max_req_size
bytes, while the reply on this path is bounded only by the client's
request, so svc_rdma_xb_linearize() copies past the end of the
buffer and corrupts adjacent slab memory. The oversized length is
then stored in sc_sges[0].length and posted, so the device also
reads beyond the mapped region.

The SGE-exhaustion branch is the only pull-up path that can exceed
the buffer: the threshold branch pulls up only replies smaller
than RPCRDMA_PULLUP_THRESH, and replies that fit the device's SGE
budget are sent directly without linearization. Make
svc_rdma_pull_up_needed() report -E2BIG when the reply it would
pull up cannot fit sc_max_req_size, and fail the request with
ERR_CHUNK as RFC 8166 Section 4.5.3 directs rather than dropping
the connection.

The helper no longer answers a simple yes/no question: it now
reports pull-up, no pull-up, or -E2BIG for a reply too large to
linearize. Rename svc_rdma_pull_up_needed() to
svc_rdma_check_pull_up() so its name no longer implies a boolean
predicate.

Comment 4 Jon Orris 2026-10-07 11:21:59 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:77500 https://access.redhat.com/errata/RHSA-2026:77500

Comment 5 Jon Orris 2026-10-07 18:52:11 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2026:77498 https://access.redhat.com/errata/RHSA-2026:77498

Comment 6 Jon Orris 2026-10-08 09:52:32 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 10

Via RHSA-2026:77690 https://access.redhat.com/errata/RHSA-2026:77690

Comment 7 Jon Orris 2026-10-08 10:52:00 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 9

Via RHSA-2026:77689 https://access.redhat.com/errata/RHSA-2026:77689


Note You need to log in before you can comment on or make changes to this bug.