All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [jlayton:ceph-fscrypt 38/39] fs/ceph/file.c:927:37: error: invalid type argument of unary (have 'u64' {aka 'long long unsigned int'})
Date: Wed, 10 Feb 2021 19:48:15 +0800	[thread overview]
Message-ID: <202102101908.f593IYES-lkp@intel.com> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git ceph-fscrypt
head:   6b3ebb239173120d2d62579b9d2a27a24c444a45
commit: 3b7f98c91a9e727c828e4e80b9543672e4439166 [38/39] ceph: add a helper for adjusting offset and length
config: ia64-randconfig-s032-20210209 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.3-215-g0fb77bb6-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git/commit/?id=3b7f98c91a9e727c828e4e80b9543672e4439166
        git remote add jlayton https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git
        git fetch --no-tags jlayton ceph-fscrypt
        git checkout 3b7f98c91a9e727c828e4e80b9543672e4439166
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=ia64 

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

All errors (new ones prefixed by >>):

   In file included from arch/ia64/include/asm/pgtable.h:154,
                    from include/linux/pgtable.h:6,
                    from arch/ia64/include/asm/uaccess.h:40,
                    from include/linux/uaccess.h:11,
                    from include/linux/sched/task.h:11,
                    from include/linux/sched/signal.h:9,
                    from include/linux/rcuwait.h:6,
                    from include/linux/percpu-rwsem.h:7,
                    from include/linux/fs.h:33,
                    from include/linux/namei.h:5,
                    from fs/ceph/file.c:10:
   arch/ia64/include/asm/mmu_context.h: In function 'reload_context':
   arch/ia64/include/asm/mmu_context.h:127:41: warning: variable 'old_rr4' set but not used [-Wunused-but-set-variable]
     127 |  unsigned long rr0, rr1, rr2, rr3, rr4, old_rr4;
         |                                         ^~~~~~~
   In file included from <command-line>:
   fs/ceph/file.c: At top level:
   include/linux/compiler_types.h:298:2: error: expected identifier or '(' before 'do'
     298 |  do {        \
         |  ^~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   fs/ceph/file.c:27:1: note: in expansion of macro 'BUILD_BUG_ON'
      27 | BUILD_BUG_ON(CEPH_FSCRYPT_BLOCK_SHIFT > PAGE_SHIFT);
         | ^~~~~~~~~~~~
   include/linux/compiler_types.h:302:4: error: expected identifier or '(' before 'while'
     302 |  } while (0)
         |    ^~~~~
   include/linux/compiler_types.h:308:2: note: in expansion of macro '__compiletime_assert'
     308 |  __compiletime_assert(condition, msg, prefix, suffix)
         |  ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:320:2: note: in expansion of macro '_compiletime_assert'
     320 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |  BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |  ^~~~~~~~~~~~~~~~
   fs/ceph/file.c:27:1: note: in expansion of macro 'BUILD_BUG_ON'
      27 | BUILD_BUG_ON(CEPH_FSCRYPT_BLOCK_SHIFT > PAGE_SHIFT);
         | ^~~~~~~~~~~~
   fs/ceph/file.c: In function 'ceph_sync_read':
>> fs/ceph/file.c:927:37: error: invalid type argument of unary '*' (have 'u64' {aka 'long long unsigned int'})
     927 |   fscrypt_adjust_off_and_len(inode, *read_off, *read_len);
         |                                     ^~~~~~~~~
   fs/ceph/file.c:927:48: error: invalid type argument of unary '*' (have 'u64' {aka 'long long unsigned int'})
     927 |   fscrypt_adjust_off_and_len(inode, *read_off, *read_len);
         |                                                ^~~~~~~~~


vim +927 fs/ceph/file.c

   874	
   875	/*
   876	 * Completely synchronous read and write methods.  Direct from __user
   877	 * buffer to osd, or directly to user pages (if O_DIRECT).
   878	 *
   879	 * If the read spans object boundary, just do multiple reads.  (That's not
   880	 * atomic, but good enough for now.)
   881	 *
   882	 * If we get a short result from the OSD, check against i_size; we need to
   883	 * only return a short read to the caller if we hit EOF.
   884	 */
   885	static ssize_t ceph_sync_read(struct kiocb *iocb, struct iov_iter *to,
   886				      int *retry_op)
   887	{
   888		struct file *file = iocb->ki_filp;
   889		struct inode *inode = file_inode(file);
   890		struct ceph_inode_info *ci = ceph_inode(inode);
   891		struct ceph_fs_client *fsc = ceph_inode_to_client(inode);
   892		struct ceph_osd_client *osdc = &fsc->client->osdc;
   893		ssize_t ret;
   894		u64 off = iocb->ki_pos;
   895		u64 len = iov_iter_count(to);
   896	
   897		dout("sync_read on file %p %llu~%u %s\n", file, off, (unsigned)len,
   898		     (file->f_flags & O_DIRECT) ? "O_DIRECT" : "");
   899	
   900		if (!len)
   901			return 0;
   902	
   903		/*
   904		 * flush any page cache pages in this range.  this
   905		 * will make concurrent normal and sync io slow,
   906		 * but it will at least behave sensibly when they are
   907		 * in sequence.
   908		 */
   909		ret = filemap_write_and_wait_range(inode->i_mapping,
   910						   off, off + len - 1);
   911		if (ret < 0)
   912			return ret;
   913	
   914		ret = 0;
   915		while ((len = iov_iter_count(to)) > 0) {
   916			struct ceph_osd_request *req;
   917			struct page **pages;
   918			int num_pages;
   919			size_t page_off;
   920			u64 i_size;
   921			bool more;
   922			int idx;
   923			size_t left;
   924			u64 read_off = off;
   925			u64 read_len = len;
   926	
 > 927			fscrypt_adjust_off_and_len(inode, *read_off, *read_len);
   928	
   929			/* determine new offset/length if encrypted */
   930			req = ceph_osdc_new_request(osdc, &ci->i_layout,
   931						ci->i_vino, read_off, &read_len, 0, 1,
   932						CEPH_OSD_OP_READ, CEPH_OSD_FLAG_READ,
   933						NULL, ci->i_truncate_seq,
   934						ci->i_truncate_size, false);
   935			if (IS_ERR(req)) {
   936				ret = PTR_ERR(req);
   937				break;
   938			}
   939	
   940			more = read_len < iov_iter_count(to);
   941	
   942			num_pages = calc_pages_for(read_off, read_len);
   943			page_off = read_off & ~PAGE_MASK;
   944			pages = ceph_alloc_page_vector(num_pages, GFP_KERNEL);
   945			if (IS_ERR(pages)) {
   946				ceph_osdc_put_request(req);
   947				ret = PTR_ERR(pages);
   948				break;
   949			}
   950	
   951			osd_req_op_extent_osd_data_pages(req, 0, pages, read_len, page_off,
   952							 false, false);
   953			ret = ceph_osdc_start_request(osdc, req, false);
   954			if (!ret)
   955				ret = ceph_osdc_wait_request(osdc, req);
   956	
   957			ceph_update_read_latency(&fsc->mdsc->metric,
   958						 req->r_start_latency,
   959						 req->r_end_latency,
   960						 ret);
   961	
   962			ceph_osdc_put_request(req);
   963	
   964	
   965			if (IS_ENCRYPTED(inode)) {
   966				int i;
   967				int baseblk = read_off >> CEPH_FSCRYPT_BLOCK_SHIFT;
   968				int num_blocks = ceph_fscrypt_blocks(read_off, read_len);
   969	
   970				for (i = 0; i < num_blocks; ++i) {
   971					int blkoff = i << CEPH_FSCRYPT_BLOCK_SHIFT;
   972					int pgidx = blkoff >> PAGE_SHIFT;
   973					unsigned int pgoffs = blkoff & ~PAGE_MASK;
   974	
   975					ret = fscrypt_decrypt_block_inplace(inode, pages[pgidx],
   976							CEPH_FSCRYPT_BLOCK_SIZE, pgoffs,
   977							baseblk + i);
   978					if (ret < 0) {
   979						ceph_release_page_vector(pages, num_pages);
   980						goto out;
   981					}
   982				}
   983			}
   984	
   985			i_size = i_size_read(inode);
   986			dout("sync_read %llu~%llu got %zd i_size %llu%s\n",
   987			     off, len, ret, i_size, (more ? " MORE" : ""));
   988	
   989			if (ret == -ENOENT)
   990				ret = 0;
   991	
   992			page_off = off & ~PAGE_MASK;
   993			if (ret >= 0 && ret < len && (off + ret < i_size)) {
   994				int zlen = min(len - ret, i_size - off - ret);
   995				int zoff = page_off + ret;
   996				dout("sync_read zero gap %llu~%llu\n",
   997	                             off + ret, off + ret + zlen);
   998				ceph_zero_page_vector_range(zoff, zlen, pages);
   999				ret += zlen;
  1000			}
  1001	
  1002			idx = 0;
  1003			left = ret > 0 ? ret : 0;
  1004			while (left > 0) {
  1005				size_t len, copied;
  1006				page_off = off & ~PAGE_MASK;
  1007				len = min_t(size_t, left, PAGE_SIZE - page_off);
  1008				SetPageUptodate(pages[idx]);
  1009				copied = copy_page_to_iter(pages[idx++],
  1010							   page_off, len, to);
  1011				off += copied;
  1012				left -= copied;
  1013				if (copied < len) {
  1014					ret = -EFAULT;
  1015					ceph_release_page_vector(pages, num_pages);
  1016					break;
  1017				}
  1018			}
  1019			ceph_release_page_vector(pages, num_pages);
  1020	
  1021			if (ret < 0) {
  1022				if (ret == -EBLOCKLISTED)
  1023					fsc->blocklisted = true;
  1024				break;
  1025			}
  1026	
  1027			if (off >= i_size || !more)
  1028				break;
  1029		}
  1030	
  1031		if (off > iocb->ki_pos) {
  1032			if (ret >= 0 &&
  1033			    iov_iter_count(to) > 0 && off >= i_size_read(inode))
  1034				*retry_op = CHECK_EOF;
  1035			ret = off - iocb->ki_pos;
  1036			iocb->ki_pos = off;
  1037		}
  1038	out:
  1039		dout("sync_read result %zd retry_op %d\n", ret, *retry_op);
  1040		return ret;
  1041	}
  1042	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28207 bytes --]

                 reply	other threads:[~2021-02-10 11:48 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=202102101908.f593IYES-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@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.