| 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-2024-50084: net: microchip: vcap api: Fix memory leaks in vcap_api_encode_rule_test() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| net: microchip: vcap api: Fix memory leaks in vcap_api_encode_rule_test() |
| |
| Commit a3c1e45156ad ("net: microchip: vcap: Fix use-after-free error in |
| kunit test") fixed the use-after-free error, but introduced below |
| memory leaks by removing necessary vcap_free_rule(), add it to fix it. |
| |
| unreferenced object 0xffffff80ca58b700 (size 192): |
| comm "kunit_try_catch", pid 1215, jiffies 4294898264 |
| hex dump (first 32 bytes): |
| 00 12 7a 00 05 00 00 00 0a 00 00 00 64 00 00 00 ..z.........d... |
| 00 00 00 00 00 00 00 00 00 04 0b cc 80 ff ff ff ................ |
| backtrace (crc 9c09c3fe): |
| [<0000000052a0be73>] kmemleak_alloc+0x34/0x40 |
| [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4 |
| [<0000000040a01b8d>] vcap_alloc_rule+0x3cc/0x9c4 |
| [<000000003fe86110>] vcap_api_encode_rule_test+0x1ac/0x16b0 |
| [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac |
| [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec |
| [<00000000c5d82c9a>] kthread+0x2e8/0x374 |
| [<00000000f4287308>] ret_from_fork+0x10/0x20 |
| unreferenced object 0xffffff80cc0b0400 (size 64): |
| comm "kunit_try_catch", pid 1215, jiffies 4294898265 |
| hex dump (first 32 bytes): |
| 80 04 0b cc 80 ff ff ff 18 b7 58 ca 80 ff ff ff ..........X..... |
| 39 00 00 00 02 00 00 00 06 05 04 03 02 01 ff ff 9............... |
| backtrace (crc daf014e9): |
| [<0000000052a0be73>] kmemleak_alloc+0x34/0x40 |
| [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4 |
| [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528 |
| [<00000000dfdb1e81>] vcap_api_encode_rule_test+0x224/0x16b0 |
| [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac |
| [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec |
| [<00000000c5d82c9a>] kthread+0x2e8/0x374 |
| [<00000000f4287308>] ret_from_fork+0x10/0x20 |
| unreferenced object 0xffffff80cc0b0700 (size 64): |
| comm "kunit_try_catch", pid 1215, jiffies 4294898265 |
| hex dump (first 32 bytes): |
| 80 07 0b cc 80 ff ff ff 28 b7 58 ca 80 ff ff ff ........(.X..... |
| 3c 00 00 00 00 00 00 00 01 2f 03 b3 ec ff ff ff <......../...... |
| backtrace (crc 8d877792): |
| [<0000000052a0be73>] kmemleak_alloc+0x34/0x40 |
| [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4 |
| [<000000006eadfab7>] vcap_rule_add_action+0x2d0/0x52c |
| [<00000000323475d1>] vcap_api_encode_rule_test+0x4d4/0x16b0 |
| [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac |
| [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec |
| [<00000000c5d82c9a>] kthread+0x2e8/0x374 |
| [<00000000f4287308>] ret_from_fork+0x10/0x20 |
| unreferenced object 0xffffff80cc0b0900 (size 64): |
| comm "kunit_try_catch", pid 1215, jiffies 4294898266 |
| hex dump (first 32 bytes): |
| 80 09 0b cc 80 ff ff ff 80 06 0b cc 80 ff ff ff ................ |
| 7d 00 00 00 01 00 00 00 00 00 00 00 ff 00 00 00 }............... |
| backtrace (crc 34181e56): |
| [<0000000052a0be73>] kmemleak_alloc+0x34/0x40 |
| [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4 |
| [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528 |
| [<00000000991e3564>] vcap_val_rule+0xcf0/0x13e8 |
| [<00000000fc9868e5>] vcap_api_encode_rule_test+0x678/0x16b0 |
| [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac |
| [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec |
| [<00000000c5d82c9a>] kthread+0x2e8/0x374 |
| [<00000000f4287308>] ret_from_fork+0x10/0x20 |
| unreferenced object 0xffffff80cc0b0980 (size 64): |
| comm "kunit_try_catch", pid 1215, jiffies 4294898266 |
| hex dump (first 32 bytes): |
| 18 b7 58 ca 80 ff ff ff 00 09 0b cc 80 ff ff ff ..X............. |
| 67 00 00 00 00 00 00 00 01 01 74 88 c0 ff ff ff g.........t..... |
| backtrace (crc 275fd9be): |
| [<0000000052a0be73>] kmemleak_alloc+0x34/0x40 |
| [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4 |
| [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528 |
| [<000000001396a1a2>] test_add_def_fields+0xb0/0x100 |
| [<000000006e7621f0>] vcap_val_rule+0xa98/0x13e8 |
| [<00000000fc9868e5>] vcap_api_encode_rule_test+0x678/0x16b0 |
| [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac |
| [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec |
| [<00000000c5d82c9a>] kthread+0x2e8/0x374 |
| [<00000000f4287308>] ret_from_fork+0x10/0x20 |
| ...... |
| |
| The Linux kernel CVE team has assigned CVE-2024-50084 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.6.51 with commit b0804c286ccfcf5f5c004d5bf8a54c0508b5e86b and fixed in 6.6.58 with commit 20b5342de51bda794791e013b90754774003a515 |
| Issue introduced in 6.11 with commit a3c1e45156ad39f225cd7ddae0f81230a3b1e657 and fixed in 6.11.5 with commit 170792097bb21e5da77443b6a03d35489813eabe |
| Issue introduced in 6.11 with commit a3c1e45156ad39f225cd7ddae0f81230a3b1e657 and fixed in 6.12 with commit 217a3d98d1e9891a8b1438a27dfbc64ddf01f691 |
| Issue introduced in 6.10.10 with commit f7fe95f40c85311c98913fe6ae2c56adb7f767a7 |
| |
| 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-2024-50084 |
| 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/microchip/vcap/vcap_api_kunit.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/20b5342de51bda794791e013b90754774003a515 |
| https://git.kernel.org/stable/c/170792097bb21e5da77443b6a03d35489813eabe |
| https://git.kernel.org/stable/c/217a3d98d1e9891a8b1438a27dfbc64ddf01f691 |