Unverified Commit f9963dea authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Konstantin Komarov
Browse files

ntfs3: work around false-postive -Wmaybe-uninitialized warnings



gcc sometimes fails to analyse how two local variables in ntfs_write_bh()
are initialized, as the initialization happens only in the first pass
through the main loop:

fs/ntfs3/fsntfs.c: In function 'ntfs_write_bh':
fs/ntfs3/fsntfs.c:1443:17: error: 'fixup' may be used uninitialized [-Werror=maybe-uninitialized]
 1443 |         __le16 *fixup;
      |                 ^~~~~
fs/ntfs3/fsntfs.c:1443:17: note: 'fixup' was declared here
 1443 |         __le16 *fixup;
      |                 ^~~~~
fs/ntfs3/fsntfs.c:1487:30: error: 'sample' may be used uninitialized [-Werror=maybe-uninitialized]
 1487 |                         *ptr = sample;
      |                         ~~~~~^~~~~~~~
fs/ntfs3/fsntfs.c:1444:16: note: 'sample' was declared here
 1444 |         __le16 sample;

Initializing the two variables to bogus values shuts up the warning and
makes it clear that those cannot be used. I tried rearranging the loop to
move the initialization in front of it, but couldn't quite figure it out.

Fixes: 48d9b57b ("fs/ntfs3: add a subset of W=1 warnings for stricter checks")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent d7ea8495
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1440,8 +1440,8 @@ int ntfs_write_bh(struct ntfs_sb_info *sbi, struct NTFS_RECORD_HEADER *rhdr,
	u16 fo = le16_to_cpu(rhdr->fix_off);
	u16 fn = le16_to_cpu(rhdr->fix_num);
	u32 idx;
	__le16 *fixup;
	__le16 sample;
	__le16 *fixup = NULL;
	__le16 sample = cpu_to_le16(-1u);

	if ((fo & 1) || fo + fn * sizeof(short) > SECTOR_SIZE || !fn-- ||
	    fn * SECTOR_SIZE > bytes) {