| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2021-47516: nfp: Fix memory leak in nfp_cpp_area_cache_add() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| nfp: Fix memory leak in nfp_cpp_area_cache_add() |
| |
| In line 800 (#1), nfp_cpp_area_alloc() allocates and initializes a |
| CPP area structure. But in line 807 (#2), when the cache is allocated |
| failed, this CPP area structure is not freed, which will result in |
| memory leak. |
| |
| We can fix it by freeing the CPP area when the cache is allocated |
| failed (#2). |
| |
| 792 int nfp_cpp_area_cache_add(struct nfp_cpp *cpp, size_t size) |
| 793 { |
| 794 struct nfp_cpp_area_cache *cache; |
| 795 struct nfp_cpp_area *area; |
| |
| 800 area = nfp_cpp_area_alloc(cpp, NFP_CPP_ID(7, NFP_CPP_ACTION_RW, 0), |
| 801 0, size); |
| // #1: allocates and initializes |
| |
| 802 if (!area) |
| 803 return -ENOMEM; |
| |
| 805 cache = kzalloc(sizeof(*cache), GFP_KERNEL); |
| 806 if (!cache) |
| 807 return -ENOMEM; // #2: missing free |
| |
| 817 return 0; |
| 818 } |
| |
| The Linux kernel CVE team has assigned CVE-2021-47516 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 4.14.258 with commit 3e93abcdcec0436fbf0b6a88ae806902426895a2 |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 4.19.221 with commit eb51f639ef3fd5498b7def290ed8681b6aadd9a7 |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 5.4.165 with commit 2e0e072e62fdaf7816220af08e05c020f0fcb77a |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 5.10.85 with commit 484069b5de9d223cc1c64c6f80389a99cfef51f1 |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 5.15.8 with commit f707820c09239d6f67699d9b2ff57863cc7905b0 |
| Issue introduced in 4.11 with commit 4cb584e0ee7df70fd0376aee60cf701855ea8c81 and fixed in 5.16 with commit c56c96303e9289cc34716b1179597b6f470833de |
| |
| 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-2021-47516 |
| 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/net/ethernet/netronome/nfp/nfpcore/nfp_cppcore.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/3e93abcdcec0436fbf0b6a88ae806902426895a2 |
| https://git.kernel.org/stable/c/eb51f639ef3fd5498b7def290ed8681b6aadd9a7 |
| https://git.kernel.org/stable/c/2e0e072e62fdaf7816220af08e05c020f0fcb77a |
| https://git.kernel.org/stable/c/484069b5de9d223cc1c64c6f80389a99cfef51f1 |
| https://git.kernel.org/stable/c/f707820c09239d6f67699d9b2ff57863cc7905b0 |
| https://git.kernel.org/stable/c/c56c96303e9289cc34716b1179597b6f470833de |