{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-49089","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-02-26T01:49:39.248Z","datePublished":"2025-02-26T01:54:45.743Z","dateUpdated":"2026-08-05T08:53:50.874Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T08:53:50.874Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nIB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition\n\nThe documentation of the function rvt_error_qp says both r_lock and s_lock\nneed to be held when calling that function.  It also asserts using lockdep\nthat both of those locks are held.  However, the commit I referenced in\nFixes accidentally makes the call to rvt_error_qp in rvt_ruc_loopback no\nlonger covered by r_lock.  This results in the lockdep assertion failing\nand also possibly in a race condition."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable path is rvt_ruc_loopback on the local send engine when an RC/UC QP targets the local LID (hfi1/qib software loopback), reached via ib_uverbs post_send/modify_qp syscalls—not by processing remote fabric packets.\nAC:L - An unprivileged attacker who can open uverbs fully controls both sides of the race by creating multiple local loopback QPs and issuing concurrent post_send operations (one triggering the unlocked rvt_error_qp path, another using the same QP as responder under r_lock).\nPR:L - /dev/infiniband/uverbs* defaults to mode 0666, and creating/using RC QPs for post_send requires no capabilities (CAP_NET_RAW is only for raw packet/QKEY cases), so a normal local user can reach the bug.\nUI:N - Exploitation needs only the attacker’s own RDMA verbs operations; no action by another user is required.\nS:U - Impact is confined to the local host kernel (memory corruption/crash/privilege escalation within the same security authority); this is not a VM escape or IOMMU boundary bypass.\nC:H - rvt_error_qp without r_lock races with concurrent receive-side use of r_sge and can double-put MRs via rvt_clear_mr_refs/rvt_put_ss, yielding a use-after-free of memory regions that can disclose arbitrary kernel/user memory.\nI:H - The same MR use-after-free and corrupted r_sge state provide a heap corruption primitive that can be leveraged for arbitrary writes and control-flow hijacking in the kernel.\nA:H - The related missing-r_lock race in this path already caused documented kernel NULL dereferences (oops/panic) in rvt_clear_mr_refs and copy_sge; the unlocked rvt_error_qp call enables the same availability-destroying crashes."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/infiniband/sw/rdmavt/qp.c"],"versions":[{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"8a50937227c385a477177c9ffa122b4230e40666","status":"affected","versionType":"git"},{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"43c2d7890ecabe527448a6c391fb2d9a5e6bbfe0","status":"affected","versionType":"git"},{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"92f1947c0d26060e978b3a9f21f32ce7c8c9cca3","status":"affected","versionType":"git"},{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"77ffb2495a41098f9d6a14f8aefde3188da75944","status":"affected","versionType":"git"},{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"57800cc36e55db0547461c49acf5cd84c0f502b0","status":"affected","versionType":"git"},{"version":"d757c60eca9b22f4d108929a24401e0fdecda0b1","lessThan":"4d809f69695d4e7d1378b3a072fa9aef23123018","status":"affected","versionType":"git"},{"version":"25636de95557a95d54ac30be94af3748345a0a90","status":"affected","versionType":"git"},{"version":"5.0.4","lessThan":"5.1","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/infiniband/sw/rdmavt/qp.c"],"versions":[{"version":"5.1","status":"affected"},{"version":"0","lessThan":"5.1","status":"unaffected","versionType":"semver"},{"version":"5.4.189","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.111","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.34","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"5.16.20","lessThanOrEqual":"5.16.*","status":"unaffected","versionType":"semver"},{"version":"5.17.3","lessThanOrEqual":"5.17.*","status":"unaffected","versionType":"semver"},{"version":"5.18","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.4.189"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.10.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.15.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.16.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.17.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.1","versionEndExcluding":"5.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.0.4"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/8a50937227c385a477177c9ffa122b4230e40666"},{"url":"https://git.kernel.org/stable/c/43c2d7890ecabe527448a6c391fb2d9a5e6bbfe0"},{"url":"https://git.kernel.org/stable/c/92f1947c0d26060e978b3a9f21f32ce7c8c9cca3"},{"url":"https://git.kernel.org/stable/c/77ffb2495a41098f9d6a14f8aefde3188da75944"},{"url":"https://git.kernel.org/stable/c/57800cc36e55db0547461c49acf5cd84c0f502b0"},{"url":"https://git.kernel.org/stable/c/4d809f69695d4e7d1378b3a072fa9aef23123018"}],"title":"IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition","x_generator":{"engine":"bippy-1.2.0"}}}}