RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.140, 6.12.88, 6.18.30, 7.0.7
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: RDMA/mlx5: Fix error path fall-through in mlx5_ib_dev_res_srq_init() mlx5_ib_dev_res_srq_init() allocates two SRQs, s0 and s1. When ib_create_srq() fails for s1, the error branch destroys s0 but falls through and unconditionally assigns the freed s0 and the ERR_PTR s1 to devr->s0 and devr->s1. This leads to several problems: the lock-free fast path checks "if (devr->s1) return 0;" and treats the ERR_PTR as already initialised; users in mlx5_ib_create_qp() dereference the freed SRQ or ERR_PTR via to_msrq(devr->s0)->msrq.srqn; and mlx5_ib_dev_res_cleanup() dereferences the ERR_PTR and double-frees s0 on teardown. Fix by adding the same `goto unlock` in the s1 failure path.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From b6334d2356fc0922ed01457960f74923058a353a · fixed in a13c2ac4d480b734342c6fbf8249fc48afd675f3; From 5895e70f2e6e8dc67b551ca554d6fcde0a7f0467 · fixed in bc2cf5935b4665172235341163315905197ae91d; From 5895e70f2e6e8dc67b551ca554d6fcde0a7f0467 · fixed in b087913ae88256df66620f7ba0a9776716aeef7e; From 5895e70f2e6e8dc67b551ca554d6fcde0a7f0467 · fixed in 6fd93142dd1d09000c3750af08270f5792523fe9; From 5895e70f2e6e8dc67b551ca554d6fcde0a7f0467 · fixed in c488df06bd552bb8b6e14fa0cfd5ad986c6e9525; From 6.6.64 · fixed in 6.6.140
- Linux Linux
6.11
- KernelLinux
fixed in 6.6.140; From 6.7.0 · fixed in 6.12.88; From 6.11.0 · fixed in 6.18.30; From 6.13.0 · fixed in 7.0.7