CVE-2021-47438·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Fix memory leak in mlx5_core_destroy_cq() error path Prior to this patch in case mlx5_core_destroy_cq() failed it returns without completing all destroy operations and that leads to memory leak. Instead, complete the destroy flow before return error. Also move mlx5_debug_cq_remove() to the beginning of mlx5_core_destroy_cq() to be symmetrical with mlx5_core_create_cq(). kmemleak complains on: unreferenced object 0xc000000038625100 (size 64): comm "ethtool", pid 28301, jiffies 4298062946 (age 785.380s) hex dump (first 32 bytes): 60 01 48 94 00 00 00 c0 b8 05 34 c3 00 00 00 c0 `.H.......4..... 02 00 00 00 00 00 00 00 00 db 7d c1 00 00 00 c0 ..........}..... backtrace: [<000000009e8643cb>] add_res_tree+0xd0/0x270 [mlx5_core] [<00000000e7cb8e6c>] mlx5_debug_cq_add+0x5c/0xc0 [mlx5_core] [<000000002a12918f>] mlx5_core_create_cq+0x1d0/0x2d0 [mlx5_core] [<00000000cef0a696>] mlx5e_create_cq+0x210/0x3f0 [mlx5_core] [<000000009c642c26>] mlx5e_open_cq+0xb4/0x130 [mlx5_core] [<0000000058dfa578>] mlx5e_ptp_open+0x7f4/0xe10 [mlx5_core] [<0000000081839561>] mlx5e_open_channels+0x9cc/0x13e0 [mlx5_core] [<0000000009cf05d4>] mlx5e_switch_priv_channels+0xa4/0x230 [mlx5_core] [<0000000042bbedd8>] mlx5e_safe_switch_params+0x14c/0x300 [mlx5_core] [<0000000004bc9db8>] set_pflag_tx_port_ts+0x9c/0x160 [mlx5_core] [<00000000a0553443>] mlx5e_set_priv_flags+0xd0/0x1b0 [mlx5_core] [<00000000a8f3d84b>] ethnl_set_privflags+0x234/0x2d0 [<00000000fd27f27c>] genl_family_rcv_msg_doit+0x108/0x1d0 [<00000000f495e2bb>] genl_family_rcv_msg+0xe4/0x1f0 [<00000000646c5c2c>] genl_rcv_msg+0x78/0x120 [<00000000d53e384e>] netlink_rcv_skb+0x74/0x1a0
- Severity
- medium
- Software
- Kernel
- Fixed in
- 5.14.14
- Published
- 2024-05-22
Affected versions
From: 5.11
Until: 5.14.14
Fixed in: 5.14.14
How to fix this CVE
Update your Linux kernel to version 5.14.14 or later to resolve this memory leak in the MLX5 Ethernet driver's completion queue destruction routine. The vulnerability causes kernel memory to not be properly freed when queue destruction fails, potentially leading to denial of service over time. Systems running affected kernel versions 5.11 through 5.14.13 should prioritize this kernel update.
sudo dnf update kernel kernel-devel && sudo rebootDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check your current kernel version with `uname -r` and compare against the fixed version 5.14.14
- Step 2: Verify if MLX5 Ethernet driver is loaded by running `lsmod | grep mlx5` (if output is empty, this CVE does not apply)
- Step 3: Monitor system memory usage over time with `free -h` every 5 minutes; a steady memory increase without corresponding process growth indicates potential memory leak
- Step 4: After patching, confirm the new kernel is booted with `uname -r` and verify kmemleak reports are cleared with `cat /sys/kernel/debug/kmemleak | grep -c mlx5`
FAQ
What is CVE-2021-47438?
This CVE describes a memory leak in the Linux kernel's MLX5 driver when destruction of completion queues fails; the kernel does not properly complete cleanup operations before returning an error, leaving allocated memory unreferenced and orphaned.
Is CVE-2021-47438 being actively exploited?
No, this vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog and no public exploits are available. It is a denial-of-service vector requiring local kernel access.
What versions of Kernel are affected by CVE-2021-47438?
Linux kernel versions from 5.11 through 5.14.13 are vulnerable; the fix was released in version 5.14.14 and backported to stable branches.
How do I check if my server is vulnerable to CVE-2021-47438?
Run `uname -r` to check your kernel version and `lsmod | grep mlx5` to confirm the MLX5 driver is loaded; if your kernel is between 5.11 and 5.14.13 and MLX5 is present, your system is vulnerable.
Does Defensia detect CVE-2021-47438?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If the Linux kernel is installed on a monitored server, CVE-2021-47438 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/4f7bddf8c5c01cac74373443b13a68e1c6723a94
- https://git.kernel.org/stable/c/94b960b9deffc02fc0747afc01f72cc62ab099e3
- https://git.kernel.org/stable/c/ed8aafea4fec9c654e63445236e0b505e27ed3a7
- https://git.kernel.org/stable/c/4f7bddf8c5c01cac74373443b13a68e1c6723a94
- https://git.kernel.org/stable/c/94b960b9deffc02fc0747afc01f72cc62ab099e3
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47438. Free for 1 server.
Get started free