All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: fs/ntfs3/attrib.c:1353:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
Date: Thu, 21 Apr 2022 14:32:07 +0800	[thread overview]
Message-ID: <202204202014.95CrpH92-lkp@intel.com> (raw)

[-- 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

                 reply	other threads:[~2022-04-21  6:32 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202204202014.95CrpH92-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.