In the Linux kernel, the following vulnerability has been resolved:
RDMA/rxe: Fix incomplete state save in rxe_requester
If a send packet is dropped by the IP layer in rxerequester() the call to rxexmit_packet() can fail with err == -EAGAIN. To recover, the state of the wqe is restored to the state before the packet was sent so it can be resent. However, the routines that save and restore the state miss a significnt part of the variable state in the wqe, the dma struct which is used to process through the sge table. And, the state is not saved before the packet is built which modifies the dma struct.
Under heavy stress testing with many QPs on a fast node sending large messages to a slow node dropped packets are observed and the resent packets are corrupted because the dma struct was not restored. This patch fixes this behavior and allows the test cases to succeed.
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/53xxx/CVE-2023-53539.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-53539.json"
[
{
"id": "CVE-2023-53539-09b768e6",
"target": {
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@70518f3aaf5a059b691867d7d2d46b999319656a",
"digest": {
"threshold": 0.9,
"line_hashes": [
"174269550458537830715872828487840504860",
"245386008638777879324698149447487506129",
"232196380711268304946405422836835983210",
"312575771182570869352062451177651122814",
"292330532659857349804869201113065880217",
"185122024686775537458527539107294914748",
"297196138260132576248424009437572372906",
"84448915064125461590147802069906698507",
"14515764607916757817043504285556951643",
"219172567788251429115521285611050508097",
"217675685760561971590022759638602063262",
"305988354775896994252991662107663900675",
"181758394673098783959048370598806745843",
"114516713377143828229222079793758671948",
"147186476566733787049633474462278946835",
"79371628439481599431428938555187147513",
"264385567375385730796388856561125353522",
"188163736742520849748472714102480391853",
"284400421004334490012165551503202184367",
"250085742106152425337829938034424158102",
"30278681730415428434408547772637251010",
"333280991529595076573419848720282906840",
"262154980907065560750558966312744524276",
"294774062565368673719635850194090993171",
"79939785941616485694711918828772300756",
"209098611889538198929829977384474660974",
"73359240524301813725839350231227408699",
"300422619283538555261872338763702016842",
"44744985795321432453753323002178510972",
"112789733286850564367891408281635994624",
"67153095686776558772899211041481661139",
"83903068296516811819134486782948826887",
"258038735653245074448771198356767409087"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2023-53539-22a4c0af",
"target": {
"function": "rollback_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@255c0e60e1d16874fc151358d94bc8df661600dd",
"digest": {
"function_hash": "243644161169657876441296606667537096410",
"length": 234.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-2dc8b08f",
"target": {
"function": "save_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@255c0e60e1d16874fc151358d94bc8df661600dd",
"digest": {
"function_hash": "200031917586450703120345841392423399633",
"length": 238.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-33278b2f",
"target": {
"function": "rxe_requester",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@70518f3aaf5a059b691867d7d2d46b999319656a",
"digest": {
"function_hash": "314813034544301406438973099824213563258",
"length": 3903.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-3acffb38",
"target": {
"function": "rollback_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5d122db2ff80cd2aed4dcd630befb56b51ddf947",
"digest": {
"function_hash": "243644161169657876441296606667537096410",
"length": 234.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-43a593c9",
"target": {
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5d122db2ff80cd2aed4dcd630befb56b51ddf947",
"digest": {
"threshold": 0.9,
"line_hashes": [
"174269550458537830715872828487840504860",
"245386008638777879324698149447487506129",
"232196380711268304946405422836835983210",
"312575771182570869352062451177651122814",
"292330532659857349804869201113065880217",
"185122024686775537458527539107294914748",
"297196138260132576248424009437572372906",
"84448915064125461590147802069906698507",
"14515764607916757817043504285556951643",
"219172567788251429115521285611050508097",
"217675685760561971590022759638602063262",
"305988354775896994252991662107663900675",
"181758394673098783959048370598806745843",
"114516713377143828229222079793758671948",
"147186476566733787049633474462278946835",
"79371628439481599431428938555187147513",
"163110451967729330187408947137322480911",
"188163736742520849748472714102480391853",
"284400421004334490012165551503202184367",
"250085742106152425337829938034424158102",
"30278681730415428434408547772637251010",
"333280991529595076573419848720282906840",
"262154980907065560750558966312744524276",
"294774062565368673719635850194090993171",
"79939785941616485694711918828772300756",
"209098611889538198929829977384474660974",
"73359240524301813725839350231227408699",
"300422619283538555261872338763702016842",
"44744985795321432453753323002178510972",
"112789733286850564367891408281635994624",
"67153095686776558772899211041481661139",
"83903068296516811819134486782948826887",
"258038735653245074448771198356767409087"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2023-53539-70ef25a3",
"target": {
"function": "rxe_requester",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5d122db2ff80cd2aed4dcd630befb56b51ddf947",
"digest": {
"function_hash": "92797040611555125247683299455517730041",
"length": 4098.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-84c19d8c",
"target": {
"function": "rxe_requester",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@255c0e60e1d16874fc151358d94bc8df661600dd",
"digest": {
"function_hash": "92797040611555125247683299455517730041",
"length": 4098.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-8f75a6e7",
"target": {
"function": "save_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f2a6422287fe29f9343247d77b645100ece0652",
"digest": {
"function_hash": "200031917586450703120345841392423399633",
"length": 238.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-b63a59e4",
"target": {
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@255c0e60e1d16874fc151358d94bc8df661600dd",
"digest": {
"threshold": 0.9,
"line_hashes": [
"174269550458537830715872828487840504860",
"245386008638777879324698149447487506129",
"232196380711268304946405422836835983210",
"312575771182570869352062451177651122814",
"292330532659857349804869201113065880217",
"185122024686775537458527539107294914748",
"297196138260132576248424009437572372906",
"84448915064125461590147802069906698507",
"14515764607916757817043504285556951643",
"219172567788251429115521285611050508097",
"217675685760561971590022759638602063262",
"305988354775896994252991662107663900675",
"181758394673098783959048370598806745843",
"114516713377143828229222079793758671948",
"147186476566733787049633474462278946835",
"79371628439481599431428938555187147513",
"163110451967729330187408947137322480911",
"188163736742520849748472714102480391853",
"284400421004334490012165551503202184367",
"250085742106152425337829938034424158102",
"30278681730415428434408547772637251010",
"333280991529595076573419848720282906840",
"262154980907065560750558966312744524276",
"294774062565368673719635850194090993171",
"79939785941616485694711918828772300756",
"209098611889538198929829977384474660974",
"73359240524301813725839350231227408699",
"300422619283538555261872338763702016842",
"44744985795321432453753323002178510972",
"112789733286850564367891408281635994624",
"67153095686776558772899211041481661139",
"83903068296516811819134486782948826887",
"258038735653245074448771198356767409087"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2023-53539-bfe3c738",
"target": {
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f2a6422287fe29f9343247d77b645100ece0652",
"digest": {
"threshold": 0.9,
"line_hashes": [
"174269550458537830715872828487840504860",
"245386008638777879324698149447487506129",
"232196380711268304946405422836835983210",
"312575771182570869352062451177651122814",
"292330532659857349804869201113065880217",
"185122024686775537458527539107294914748",
"297196138260132576248424009437572372906",
"84448915064125461590147802069906698507",
"14515764607916757817043504285556951643",
"219172567788251429115521285611050508097",
"217675685760561971590022759638602063262",
"305988354775896994252991662107663900675",
"181758394673098783959048370598806745843",
"114516713377143828229222079793758671948",
"147186476566733787049633474462278946835",
"79371628439481599431428938555187147513",
"163110451967729330187408947137322480911",
"188163736742520849748472714102480391853",
"284400421004334490012165551503202184367",
"250085742106152425337829938034424158102",
"30278681730415428434408547772637251010",
"333280991529595076573419848720282906840",
"262154980907065560750558966312744524276",
"294774062565368673719635850194090993171",
"79939785941616485694711918828772300756",
"209098611889538198929829977384474660974",
"73359240524301813725839350231227408699",
"300422619283538555261872338763702016842",
"44744985795321432453753323002178510972",
"112789733286850564367891408281635994624",
"67153095686776558772899211041481661139",
"83903068296516811819134486782948826887",
"258038735653245074448771198356767409087"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2023-53539-c1caaf6c",
"target": {
"function": "save_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5d122db2ff80cd2aed4dcd630befb56b51ddf947",
"digest": {
"function_hash": "200031917586450703120345841392423399633",
"length": 238.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-dc02d03a",
"target": {
"function": "rxe_requester",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f2a6422287fe29f9343247d77b645100ece0652",
"digest": {
"function_hash": "92797040611555125247683299455517730041",
"length": 4098.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-dd221a64",
"target": {
"function": "rollback_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2f2a6422287fe29f9343247d77b645100ece0652",
"digest": {
"function_hash": "243644161169657876441296606667537096410",
"length": 234.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-e04367ec",
"target": {
"function": "save_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@70518f3aaf5a059b691867d7d2d46b999319656a",
"digest": {
"function_hash": "200031917586450703120345841392423399633",
"length": 238.0
},
"signature_type": "Function"
},
{
"id": "CVE-2023-53539-fa5581ba",
"target": {
"function": "rollback_state",
"file": "drivers/infiniband/sw/rxe/rxe_req.c"
},
"signature_version": "v1",
"deprecated": false,
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@70518f3aaf5a059b691867d7d2d46b999319656a",
"digest": {
"function_hash": "243644161169657876441296606667537096410",
"length": 234.0
},
"signature_type": "Function"
}
]