Skip to content

Commit 679ee5a

Browse files
charsyamnamjaejeon
authored andcommitted
ntfs: fix MFT bitmap scan 2^32 boundary check
NTFS MFT record numbers are limited to the 32-bit range, and ntfs_mft_record_layout() rejects mft_no >= 2^32. The free-MFT-record bitmap scan in ntfs_mft_bitmap_find_and_alloc_free_rec_nolock() also guards against this overflow but uses a strict greater than comparison, allowing record number 2^32 itself through this earlier check. Every other 2^32 boundary check in fs/ntfs/mft.c uses '>=', so the strict greater than here is both a real off-by-one and an internal inconsistency. A model with ll == 2^32 confirms the current check accepts the value while the corrected check rejects it. Use '>=' so the boundary matches the layout-time rejection and the surrounding bitmap-scan checks. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: DaeMyung Kang <charsyam@gmail.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
1 parent 6098790 commit 679ee5a

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

fs/ntfs/mft.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1064,7 +1064,7 @@ static s64 ntfs_mft_bitmap_find_and_alloc_free_rec_nolock(struct ntfs_volume *vo
10641064
b = ffz((unsigned long)*byte);
10651065
if (b < 8 && b >= (bit & 7)) {
10661066
ll = data_pos + (bit & ~7ull) + b;
1067-
if (unlikely(ll > (1ll << 32))) {
1067+
if (unlikely(ll >= (1ll << 32))) {
10681068
folio_unlock(folio);
10691069
kunmap_local(buf);
10701070
folio_put(folio);

0 commit comments

Comments
 (0)