Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: 48d9b57b169f ("fs/ntfs3: add a subset of W=1 warnings for stricter checks")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>

authored by

Arnd Bergmann and committed by
Konstantin Komarov
f9963dea d7ea8495

+2 -2
+2 -2
fs/ntfs3/fsntfs.c
··· 1440 1440 u16 fo = le16_to_cpu(rhdr->fix_off); 1441 1441 u16 fn = le16_to_cpu(rhdr->fix_num); 1442 1442 u32 idx; 1443 - __le16 *fixup; 1444 - __le16 sample; 1443 + __le16 *fixup = NULL; 1444 + __le16 sample = cpu_to_le16(-1u); 1445 1445 1446 1446 if ((fo & 1) || fo + fn * sizeof(short) > SECTOR_SIZE || !fn-- || 1447 1447 fn * SECTOR_SIZE > bytes) {