| 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-53130: nilfs2: fix null-ptr-deref in block_dirty_buffer tracepoint |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| nilfs2: fix null-ptr-deref in block_dirty_buffer tracepoint |
| |
| When using the "block:block_dirty_buffer" tracepoint, mark_buffer_dirty() |
| may cause a NULL pointer dereference, or a general protection fault when |
| KASAN is enabled. |
| |
| This happens because, since the tracepoint was added in |
| mark_buffer_dirty(), it references the dev_t member bh->b_bdev->bd_dev |
| regardless of whether the buffer head has a pointer to a block_device |
| structure. |
| |
| In the current implementation, nilfs_grab_buffer(), which grabs a buffer |
| to read (or create) a block of metadata, including b-tree node blocks, |
| does not set the block device, but instead does so only if the buffer is |
| not in the "uptodate" state for each of its caller block reading |
| functions. However, if the uptodate flag is set on a folio/page, and the |
| buffer heads are detached from it by try_to_free_buffers(), and new buffer |
| heads are then attached by create_empty_buffers(), the uptodate flag may |
| be restored to each buffer without the block device being set to |
| bh->b_bdev, and mark_buffer_dirty() may be called later in that state, |
| resulting in the bug mentioned above. |
| |
| Fix this issue by making nilfs_grab_buffer() always set the block device |
| of the super block structure to the buffer head, regardless of the state |
| of the buffer's uptodate flag. |
| |
| The Linux kernel CVE team has assigned CVE-2024-53130 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 4.19.325 with commit 7af3309c7a2ef26831a67125b11c34a7e01c1b2a |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 5.4.287 with commit 0ce59fb1c73fdd5b6028226aeb46259a0cdc0957 |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 5.10.231 with commit 0a5014ad37c77ac6a2c525137c00a0e1724f6020 |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 5.15.174 with commit d904e4d845aafbcfd8a40c1df7d999f02f062be8 |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 6.1.119 with commit 86b19031dbc79abc378dfae357f6ea33ebeb0c95 |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 6.6.63 with commit b0e4765740040c44039282057ecacd7435d1d2ba |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 6.11.10 with commit ffc440a76a0f476a7e6ea838ec0dc8e9979944d1 |
| Issue introduced in 3.9 with commit 5305cb830834549b9203ad4d009ad5483c5e293f and fixed in 6.12 with commit 2026559a6c4ce34db117d2db8f710fe2a9420d5a |
| |
| 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-53130 |
| 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: |
| fs/nilfs2/btnode.c |
| fs/nilfs2/gcinode.c |
| fs/nilfs2/mdt.c |
| fs/nilfs2/page.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/7af3309c7a2ef26831a67125b11c34a7e01c1b2a |
| https://git.kernel.org/stable/c/0ce59fb1c73fdd5b6028226aeb46259a0cdc0957 |
| https://git.kernel.org/stable/c/0a5014ad37c77ac6a2c525137c00a0e1724f6020 |
| https://git.kernel.org/stable/c/d904e4d845aafbcfd8a40c1df7d999f02f062be8 |
| https://git.kernel.org/stable/c/86b19031dbc79abc378dfae357f6ea33ebeb0c95 |
| https://git.kernel.org/stable/c/b0e4765740040c44039282057ecacd7435d1d2ba |
| https://git.kernel.org/stable/c/ffc440a76a0f476a7e6ea838ec0dc8e9979944d1 |
| https://git.kernel.org/stable/c/2026559a6c4ce34db117d2db8f710fe2a9420d5a |