All of lore.kernel.org
 help / color / mirror / Atom feed
* fs/ntfs3/attrib.c:1353:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
@ 2022-04-21  6:32 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-21  6:32 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 22787 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   559089e0a93d44280ec3ab478830af319c56dbe3
commit: 6e5be40d32fb1907285277c02e74493ed43d77fe fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile
date:   8 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 8 months ago
config: riscv-randconfig-c006-20220420 (https://download.01.org/0day-ci/archive/20220420/202204202014.95CrpH92-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project bac6cd5bf85669e3376610cfc4c4f9ca015e7b9b)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e5be40d32fb1907285277c02e74493ed43d77fe
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 6e5be40d32fb1907285277c02e74493ed43d77fe
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   fs/ntfs3/attrib.c:519:6: note: Assuming 'new_size' is <= 'old_size'
           if (new_size > old_size) {
               ^~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:519:2: note: Taking false branch
           if (new_size > old_size) {
           ^
   fs/ntfs3/attrib.c:686:6: note: Assuming 'new_size' is not equal to 'old_size'
           if (new_size != old_size ||
               ^~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:686:27: note: Left side of '||' is true
           if (new_size != old_size ||
                                    ^
   fs/ntfs3/attrib.c:688:9: note: Assuming '__UNIQUE_ID___x275' is <= '__UNIQUE_ID___y276'
                   vcn = max(svcn, new_alen);
                         ^
   include/linux/minmax.h:52:19: note: expanded from macro 'max'
   #define max(x, y)       __careful_cmp(x, y, >)
                           ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   fs/ntfs3/attrib.c:688:9: note: '?' condition is false
                   vcn = max(svcn, new_alen);
                         ^
   include/linux/minmax.h:52:19: note: expanded from macro 'max'
   #define max(x, y)       __careful_cmp(x, y, >)
                           ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   fs/ntfs3/attrib.c:694:7: note: Assuming 'err' is 0
                   if (err)
                       ^~~
   fs/ntfs3/attrib.c:694:3: note: Taking false branch
                   if (err)
                   ^
   fs/ntfs3/attrib.c:699:7: note: Assuming 'vcn' is <= 'svcn'
                   if (vcn > svcn) {
                       ^~~~~~~~~~
   fs/ntfs3/attrib.c:699:3: note: Taking false branch
                   if (vcn > svcn) {
                   ^
   fs/ntfs3/attrib.c:703:14: note: Assuming 'le' is null
                   } else if (le && le->vcn) {
                              ^~
   fs/ntfs3/attrib.c:703:17: note: Left side of '&&' is false
                   } else if (le && le->vcn) {
                                 ^
   fs/ntfs3/attrib.c:728:7: note: 'vcn' is equal to 'new_alen'
                   if (vcn == new_alen) {
                       ^~~
   fs/ntfs3/attrib.c:728:3: note: Taking true branch
                   if (vcn == new_alen) {
                   ^
   fs/ntfs3/attrib.c:730:8: note: Assuming 'new_size' is >= 'old_valid'
                           if (new_size < old_valid)
                               ^~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:730:4: note: Taking false branch
                           if (new_size < old_valid)
                           ^
   fs/ntfs3/attrib.c:744:7: note: 'is_ext' is false
                   if (is_ext)
                       ^~~~~~
   fs/ntfs3/attrib.c:744:3: note: Taking false branch
                   if (is_ext)
                   ^
   fs/ntfs3/attrib.c:750:7: note: Assuming 'new_alloc_tmp' is > 'new_alloc'
                   if (new_alloc_tmp <= new_alloc)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:750:3: note: Taking false branch
                   if (new_alloc_tmp <= new_alloc)
                   ^
   fs/ntfs3/attrib.c:756:7: note: 'le' is not equal to 'le_b'
                   if (le == le_b) {
                       ^~
   fs/ntfs3/attrib.c:756:3: note: Taking false branch
                   if (le == le_b) {
                   ^
   fs/ntfs3/attrib.c:764:7: note: Access to field 'type' results in a dereference of a null pointer (loaded from variable 'le')
                   if (le->type != type || le->name_len != name_len ||
                       ^~
   fs/ntfs3/attrib.c:1191:7: warning: Value stored to 'vcn' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           CLST vcn = from >> cluster_bits;
                ^~~   ~~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1191:7: note: Value stored to 'vcn' during its initialization is never read
           CLST vcn = from >> cluster_bits;
                ^~~   ~~~~~~~~~~~~~~~~~~~~
>> fs/ntfs3/attrib.c:1353:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return err;
           ^      ~~~
   fs/ntfs3/attrib.c:1225:9: note: 'err' declared without an initial value
           int i, err;
                  ^~~
   fs/ntfs3/attrib.c:1229:6: note: Assuming field 'i_size' is >= 4294967296
           if (ni->vfs_inode.i_size < 0x100000000ull) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1229:2: note: Taking false branch
           if (ni->vfs_inode.i_size < 0x100000000ull) {
           ^
   fs/ntfs3/attrib.c:1245:6: note: Assuming field 'non_res' is not equal to 0
           if (!attr->non_res) {
               ^~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1245:2: note: Taking false branch
           if (!attr->non_res) {
           ^
   fs/ntfs3/attrib.c:1270:6: note: Assuming 'page' is non-null
           if (!page) {
               ^~~~~
   fs/ntfs3/attrib.c:1270:2: note: Taking false branch
           if (!page) {
           ^
   fs/ntfs3/attrib.c:1282:6: note: Assuming the condition is false
           if (vbo[1]) {
               ^~~~~~
   fs/ntfs3/attrib.c:1282:2: note: Taking false branch
           if (vbo[1]) {
           ^
   fs/ntfs3/attrib.c:1296:7: note: Assuming 'index' is equal to field 'index'
                   if (index != page->index) {
                       ^~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1296:3: note: Taking false branch
                   if (index != page->index) {
                   ^
   fs/ntfs3/attrib.c:1315:7: note: 'i' is 1
                   if (i) {
                       ^
   fs/ntfs3/attrib.c:1315:3: note: Taking true branch
                   if (i) {
                   ^
   fs/ntfs3/attrib.c:1316:4: note: Taking false branch
                           if (bytes_per_off == sizeof(__le32)) {
                           ^
   fs/ntfs3/attrib.c:1293:2: note: Loop condition is false.  Exiting loop
           do {
           ^
   fs/ntfs3/attrib.c:1353:2: note: Undefined or garbage value returned to caller
           return err;
           ^      ~~~
   fs/ntfs3/attrib.c:1678:15: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
           valid_size = le64_to_cpu(attr_b->nres.valid_size);
                        ^
   include/linux/byteorder/generic.h:87:21: note: expanded from macro 'le64_to_cpu'
   #define le64_to_cpu __le64_to_cpu
                       ^
   include/uapi/linux/byteorder/little_endian.h:32:50: note: expanded from macro '__le64_to_cpu'
   #define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
                                                    ^~~
   fs/ntfs3/attrib.c:1482:6: note: Assuming 'attr_b' is non-null
           if (!attr_b)
               ^~~~~~~
   fs/ntfs3/attrib.c:1482:2: note: Taking false branch
           if (!attr_b)
           ^
   fs/ntfs3/attrib.c:1485:6: note: Assuming the condition is false
           if (!is_attr_ext(attr_b))
               ^~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1485:2: note: Taking false branch
           if (!is_attr_ext(attr_b))
           ^
   fs/ntfs3/attrib.c:1495:6: note: Assuming 'svcn' is > 'vcn'
           if (svcn <= vcn && vcn < evcn1) {
               ^~~~~~~~~~~
   fs/ntfs3/attrib.c:1495:18: note: Left side of '&&' is false
           if (svcn <= vcn && vcn < evcn1) {
                           ^
   fs/ntfs3/attrib.c:1499:13: note: Assuming 'le_b' is non-null
           } else if (!le_b) {
                      ^~~~~
   fs/ntfs3/attrib.c:1499:9: note: Taking false branch
           } else if (!le_b) {
                  ^
   fs/ntfs3/attrib.c:1506:7: note: Assuming 'attr' is non-null
                   if (!attr) {
                       ^~~~~
   fs/ntfs3/attrib.c:1506:3: note: Taking false branch
                   if (!attr) {
                   ^
   fs/ntfs3/attrib.c:1515:6: note: Assuming 'err' is 0
           if (err)
               ^~~
   fs/ntfs3/attrib.c:1515:2: note: Taking false branch
           if (err)
           ^
   fs/ntfs3/attrib.c:1518:8: note: Calling 'attr_is_frame_compressed'
           err = attr_is_frame_compressed(ni, attr_b, frame, &clst_data);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ntfs3/attrib.c:1373:6: note: Assuming the condition is false
           if (!is_attr_compressed(attr))

vim +1353 fs/ntfs3/attrib.c

be71b5cba2e648 Konstantin Komarov 2021-08-13  1208  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1209  #ifdef CONFIG_NTFS3_LZX_XPRESS
be71b5cba2e648 Konstantin Komarov 2021-08-13  1210  /*
be71b5cba2e648 Konstantin Komarov 2021-08-13  1211   * attr_wof_frame_info
be71b5cba2e648 Konstantin Komarov 2021-08-13  1212   *
be71b5cba2e648 Konstantin Komarov 2021-08-13  1213   * read header of xpress/lzx file to get info about frame
be71b5cba2e648 Konstantin Komarov 2021-08-13  1214   */
be71b5cba2e648 Konstantin Komarov 2021-08-13  1215  int attr_wof_frame_info(struct ntfs_inode *ni, struct ATTRIB *attr,
be71b5cba2e648 Konstantin Komarov 2021-08-13  1216  			struct runs_tree *run, u64 frame, u64 frames,
be71b5cba2e648 Konstantin Komarov 2021-08-13  1217  			u8 frame_bits, u32 *ondisk_size, u64 *vbo_data)
be71b5cba2e648 Konstantin Komarov 2021-08-13  1218  {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1219  	struct ntfs_sb_info *sbi = ni->mi.sbi;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1220  	u64 vbo[2], off[2], wof_size;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1221  	u32 voff;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1222  	u8 bytes_per_off;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1223  	char *addr;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1224  	struct page *page;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1225  	int i, err;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1226  	__le32 *off32;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1227  	__le64 *off64;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1228  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1229  	if (ni->vfs_inode.i_size < 0x100000000ull) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1230  		/* file starts with array of 32 bit offsets */
be71b5cba2e648 Konstantin Komarov 2021-08-13  1231  		bytes_per_off = sizeof(__le32);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1232  		vbo[1] = frame << 2;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1233  		*vbo_data = frames << 2;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1234  	} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1235  		/* file starts with array of 64 bit offsets */
be71b5cba2e648 Konstantin Komarov 2021-08-13  1236  		bytes_per_off = sizeof(__le64);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1237  		vbo[1] = frame << 3;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1238  		*vbo_data = frames << 3;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1239  	}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1240  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1241  	/*
be71b5cba2e648 Konstantin Komarov 2021-08-13  1242  	 * read 4/8 bytes at [vbo - 4(8)] == offset where compressed frame starts
be71b5cba2e648 Konstantin Komarov 2021-08-13  1243  	 * read 4/8 bytes@[vbo] == offset where compressed frame ends
be71b5cba2e648 Konstantin Komarov 2021-08-13  1244  	 */
be71b5cba2e648 Konstantin Komarov 2021-08-13  1245  	if (!attr->non_res) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1246  		if (vbo[1] + bytes_per_off > le32_to_cpu(attr->res.data_size)) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1247  			ntfs_inode_err(&ni->vfs_inode, "is corrupted");
be71b5cba2e648 Konstantin Komarov 2021-08-13  1248  			return -EINVAL;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1249  		}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1250  		addr = resident_data(attr);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1251  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1252  		if (bytes_per_off == sizeof(__le32)) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1253  			off32 = Add2Ptr(addr, vbo[1]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1254  			off[0] = vbo[1] ? le32_to_cpu(off32[-1]) : 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1255  			off[1] = le32_to_cpu(off32[0]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1256  		} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1257  			off64 = Add2Ptr(addr, vbo[1]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1258  			off[0] = vbo[1] ? le64_to_cpu(off64[-1]) : 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1259  			off[1] = le64_to_cpu(off64[0]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1260  		}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1261  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1262  		*vbo_data += off[0];
be71b5cba2e648 Konstantin Komarov 2021-08-13  1263  		*ondisk_size = off[1] - off[0];
be71b5cba2e648 Konstantin Komarov 2021-08-13  1264  		return 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1265  	}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1266  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1267  	wof_size = le64_to_cpu(attr->nres.data_size);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1268  	down_write(&ni->file.run_lock);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1269  	page = ni->file.offs_page;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1270  	if (!page) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1271  		page = alloc_page(GFP_KERNEL);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1272  		if (!page) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1273  			err = -ENOMEM;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1274  			goto out;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1275  		}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1276  		page->index = -1;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1277  		ni->file.offs_page = page;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1278  	}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1279  	lock_page(page);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1280  	addr = page_address(page);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1281  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1282  	if (vbo[1]) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1283  		voff = vbo[1] & (PAGE_SIZE - 1);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1284  		vbo[0] = vbo[1] - bytes_per_off;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1285  		i = 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1286  	} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1287  		voff = 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1288  		vbo[0] = 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1289  		off[0] = 0;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1290  		i = 1;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1291  	}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1292  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1293  	do {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1294  		pgoff_t index = vbo[i] >> PAGE_SHIFT;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1295  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1296  		if (index != page->index) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1297  			u64 from = vbo[i] & ~(u64)(PAGE_SIZE - 1);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1298  			u64 to = min(from + PAGE_SIZE, wof_size);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1299  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1300  			err = attr_load_runs_range(ni, ATTR_DATA, WOF_NAME,
be71b5cba2e648 Konstantin Komarov 2021-08-13  1301  						   ARRAY_SIZE(WOF_NAME), run,
be71b5cba2e648 Konstantin Komarov 2021-08-13  1302  						   from, to);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1303  			if (err)
be71b5cba2e648 Konstantin Komarov 2021-08-13  1304  				goto out1;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1305  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1306  			err = ntfs_bio_pages(sbi, run, &page, 1, from,
be71b5cba2e648 Konstantin Komarov 2021-08-13  1307  					     to - from, REQ_OP_READ);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1308  			if (err) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1309  				page->index = -1;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1310  				goto out1;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1311  			}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1312  			page->index = index;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1313  		}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1314  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1315  		if (i) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1316  			if (bytes_per_off == sizeof(__le32)) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1317  				off32 = Add2Ptr(addr, voff);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1318  				off[1] = le32_to_cpu(*off32);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1319  			} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1320  				off64 = Add2Ptr(addr, voff);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1321  				off[1] = le64_to_cpu(*off64);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1322  			}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1323  		} else if (!voff) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1324  			if (bytes_per_off == sizeof(__le32)) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1325  				off32 = Add2Ptr(addr, PAGE_SIZE - sizeof(u32));
be71b5cba2e648 Konstantin Komarov 2021-08-13  1326  				off[0] = le32_to_cpu(*off32);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1327  			} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1328  				off64 = Add2Ptr(addr, PAGE_SIZE - sizeof(u64));
be71b5cba2e648 Konstantin Komarov 2021-08-13  1329  				off[0] = le64_to_cpu(*off64);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1330  			}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1331  		} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1332  			/* two values in one page*/
be71b5cba2e648 Konstantin Komarov 2021-08-13  1333  			if (bytes_per_off == sizeof(__le32)) {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1334  				off32 = Add2Ptr(addr, voff);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1335  				off[0] = le32_to_cpu(off32[-1]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1336  				off[1] = le32_to_cpu(off32[0]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1337  			} else {
be71b5cba2e648 Konstantin Komarov 2021-08-13  1338  				off64 = Add2Ptr(addr, voff);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1339  				off[0] = le64_to_cpu(off64[-1]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1340  				off[1] = le64_to_cpu(off64[0]);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1341  			}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1342  			break;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1343  		}
be71b5cba2e648 Konstantin Komarov 2021-08-13  1344  	} while (++i < 2);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1345  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1346  	*vbo_data += off[0];
be71b5cba2e648 Konstantin Komarov 2021-08-13  1347  	*ondisk_size = off[1] - off[0];
be71b5cba2e648 Konstantin Komarov 2021-08-13  1348  
be71b5cba2e648 Konstantin Komarov 2021-08-13  1349  out1:
be71b5cba2e648 Konstantin Komarov 2021-08-13  1350  	unlock_page(page);
be71b5cba2e648 Konstantin Komarov 2021-08-13  1351  out:
be71b5cba2e648 Konstantin Komarov 2021-08-13  1352  	up_write(&ni->file.run_lock);
be71b5cba2e648 Konstantin Komarov 2021-08-13 @1353  	return err;
be71b5cba2e648 Konstantin Komarov 2021-08-13  1354  }
be71b5cba2e648 Konstantin Komarov 2021-08-13  1355  #endif
be71b5cba2e648 Konstantin Komarov 2021-08-13  1356  

:::::: The code at line 1353 was first introduced by commit
:::::: be71b5cba2e6485e8959da7a9f9a44461a1bb074 fs/ntfs3: Add attrib operations

:::::: TO: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
:::::: CC: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-04-21  6:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-21  6:32 fs/ntfs3/attrib.c:1353:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn] kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.