Skip to content

Commit 545834a

Browse files
committed
ntfs: fix uninitialized pointer in ntfs_write_mft_block
Smatch reported that the variable rl could be used uninitialized in ntfs_write_mft_block(). After analyzing the code, when vol->cluster_size == NTFS_BLOCK_SIZE (512), it is smaller than folio_size, so rl is guaranteed to be initialized. If vol->cluster_size is larger, the condition to access rl becomes false, so a runtime error is not expected to occur. However, to make the static checker happy, this patch initializes rl to NULL and adds an explicit check before its usage. Reported-by: Dan Carpenter <error27@gmail.com> Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
1 parent 8a59a2d commit 545834a

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

fs/ntfs/mft.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2714,7 +2714,7 @@ static int ntfs_write_mft_block(struct folio *folio, struct writeback_control *w
27142714
s64 vcn = ntfs_pidx_to_cluster(vol, folio->index);
27152715
s64 end_vcn = ntfs_bytes_to_cluster(vol, ni->allocated_size);
27162716
unsigned int folio_sz;
2717-
struct runlist_element *rl;
2717+
struct runlist_element *rl = NULL;
27182718
loff_t i_size = i_size_read(vi);
27192719

27202720
ntfs_debug("Entering for inode 0x%llx, attribute type 0x%x, folio index 0x%lx.",
@@ -2820,7 +2820,7 @@ static int ntfs_write_mft_block(struct folio *folio, struct writeback_control *w
28202820

28212821
if (vol->cluster_size == NTFS_BLOCK_SIZE &&
28222822
(mft_record_off ||
2823-
rl->length - (vcn_off - rl->vcn) == 1 ||
2823+
(rl && rl->length - (vcn_off - rl->vcn) == 1) ||
28242824
mft_ofs + NTFS_BLOCK_SIZE >= PAGE_SIZE))
28252825
folio_sz = NTFS_BLOCK_SIZE;
28262826
else

0 commit comments

Comments
 (0)