| 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-43914: md/raid5: avoid BUG_ON() while continue reshape after reassembling |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| md/raid5: avoid BUG_ON() while continue reshape after reassembling |
| |
| Currently, mdadm support --revert-reshape to abort the reshape while |
| reassembling, as the test 07revert-grow. However, following BUG_ON() |
| can be triggerred by the test: |
| |
| kernel BUG at drivers/md/raid5.c:6278! |
| invalid opcode: 0000 [#1] PREEMPT SMP PTI |
| irq event stamp: 158985 |
| CPU: 6 PID: 891 Comm: md0_reshape Not tainted 6.9.0-03335-g7592a0b0049a #94 |
| RIP: 0010:reshape_request+0x3f1/0xe60 |
| Call Trace: |
| <TASK> |
| raid5_sync_request+0x43d/0x550 |
| md_do_sync+0xb7a/0x2110 |
| md_thread+0x294/0x2b0 |
| kthread+0x147/0x1c0 |
| ret_from_fork+0x59/0x70 |
| ret_from_fork_asm+0x1a/0x30 |
| </TASK> |
| |
| Root cause is that --revert-reshape update the raid_disks from 5 to 4, |
| while reshape position is still set, and after reassembling the array, |
| reshape position will be read from super block, then during reshape the |
| checking of 'writepos' that is caculated by old reshape position will |
| fail. |
| |
| Fix this panic the easy way first, by converting the BUG_ON() to |
| WARN_ON(), and stop the reshape if checkings fail. |
| |
| Noted that mdadm must fix --revert-shape as well, and probably md/raid |
| should enhance metadata validation as well, however this means |
| reassemble will fail and there must be user tools to fix the wrong |
| metadata. |
| |
| The Linux kernel CVE team has assigned CVE-2024-43914 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Fixed in 4.19.320 with commit 2c92f8c1c456d556f15cbf51667b385026b2e6a0 |
| Fixed in 5.4.282 with commit 6b33c468d543f6a83de2d61f09fec74b27e19fd2 |
| Fixed in 5.10.224 with commit c384dd4f1fb3b14a2fd199360701cc163ea88705 |
| Fixed in 5.15.165 with commit bf0ff69a42a3d2d46876d0514ecf13dffc516666 |
| Fixed in 6.1.105 with commit 3b33740c1750a39e046339ff9240e954f0156707 |
| Fixed in 6.6.46 with commit 775a9ba16c9ffe98fe54ebf14e55d5660f2bf600 |
| Fixed in 6.10.5 with commit 4811d6e5d9f4090c3e0ff9890eb24077108046ab |
| Fixed in 6.11 with commit 305a5170dc5cf3d395bb4c4e9239bca6d0b54b49 |
| |
| 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-43914 |
| 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/md/raid5.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/2c92f8c1c456d556f15cbf51667b385026b2e6a0 |
| https://git.kernel.org/stable/c/6b33c468d543f6a83de2d61f09fec74b27e19fd2 |
| https://git.kernel.org/stable/c/c384dd4f1fb3b14a2fd199360701cc163ea88705 |
| https://git.kernel.org/stable/c/bf0ff69a42a3d2d46876d0514ecf13dffc516666 |
| https://git.kernel.org/stable/c/3b33740c1750a39e046339ff9240e954f0156707 |
| https://git.kernel.org/stable/c/775a9ba16c9ffe98fe54ebf14e55d5660f2bf600 |
| https://git.kernel.org/stable/c/4811d6e5d9f4090c3e0ff9890eb24077108046ab |
| https://git.kernel.org/stable/c/305a5170dc5cf3d395bb4c4e9239bca6d0b54b49 |