Subject: CVE-2024-40992: RDMA/rxe: Fix responder length checking for UD request packets

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

RDMA/rxe: Fix responder length checking for UD request packets

According to the IBA specification:
If a UD request packet is detected with an invalid length, the request
shall be an invalid request and it shall be silently dropped by
the responder. The responder then waits for a new request packet.

commit 689c5421bfe0 ("RDMA/rxe: Fix incorrect responder length checking")
defers responder length check for UD QPs in function `copy_data`.
But it introduces a regression issue for UD QPs.

When the packet size is too large to fit in the receive buffer.
`copy_data` will return error code -EINVAL. Then `send_data_in`
will return RESPST_ERR_MALFORMED_WQE. UD QP will transfer into
ERROR state.

The Linux kernel CVE team has assigned CVE-2024-40992 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 6.2 with commit 689c5421bfe0 and fixed in 6.6.36 with commit 163868ec1f6c
	Issue introduced in 6.2 with commit 689c5421bfe0 and fixed in 6.9.7 with commit 943c94f41dfe
	Issue introduced in 6.2 with commit 689c5421bfe0 and fixed in 6.10 with commit f67ac0061c76

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-40992
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/infiniband/sw/rxe/rxe_resp.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/163868ec1f6c610d16da9e458fe1dd7d5de97341
	https://git.kernel.org/stable/c/943c94f41dfe36536dc9aaa12c9efdf548ceb996
	https://git.kernel.org/stable/c/f67ac0061c7614c1548963d3ef1ee1606efd8636